Scala學習: 字符串插值

Scala學習: 字符串插值


自2.10.0版本開始Scala提供了一種新的機制來處理字符串:字符串插值。字符串插值允許 開發者將 ‘變量’直接引用到 ‘字符串’常量中。
Scala有三種類型的字符串插值方式:
  • s: 在任何字符串前加上s,就可以在字符串中 引用 變量 或 表達式了。
    • 變量:$變量名。
    • 表達式:${a+b}
  • f: 在任何字符串前加上f,就可以格式化字符串,類似於StringFormat 或 printf 的效果。使用f時所有引用變量後面都應該加上一個’printf-style’格式的字符串:Java 格式化類 java.util.Formatter 基本用法
    • 1 整數- 可應用於 Java 的整數類型:byte、Byte、short、Short、int、Integer、long、Long 和 BigInteger
    • 2 浮點- 可用於 Java 的浮點類型:float、Float、double、Double 和 BigDecimal
    • 3 日期/時間- 可應用於 Java 的、能夠對日期或時間進行編碼的類型:long、Long、Calendar 和 Date。
    • 4 百分比- 產生字面值 ‘%’ (‘\u0025’)
    • 5 行分隔符- 產生特定於平臺的行分隔符
類型 符號 結果
字符 C c 結果是一個 Unicode 字符
字符 S s 如果參數 arg 爲 null,則結果爲 “null”。如果 arg 實現 Formattable,則調用 arg.formatTo。否則,結果爲調用 arg.toString() 得到的結果。
布爾 B b 如果參數 arg 爲 null,則結果爲 “false”。如果 arg 是一個 boolean 值或 Boolean,則結果爲 String.valueOf() 返回的字符串。否則結果爲 “true”。
整數 H s 如果參數 arg 爲 null,則結果爲 “null”。否則,結果爲調用 Integer.toHexString(arg.hashCode()) 得到的結果。
整數 d 結果被格式化爲十進制整數
整數 o 結果被格式化爲八進制整數
整數 X x 結果被格式化爲十六進制整數
浮點 E e 結果被格式化爲用計算機科學記數法表示的十進制數
浮點 f 結果被格式化爲十進制數
浮點 G g 根據精度和舍入運算後的值,使用計算機科學記數形式或十進制格式對結果進行格式化。
浮點 A a 結果被格式化爲帶有效位數和指數的十六進制浮點數
  • raw: 除了對字符串中的插值不做處理外,作用與s是相同的。
object HelloTest {
  def main(args: Array[String]): Unit = {

    // s插值
    val name = "guyue"
    println(s"Hello, my name is $name")

    // 處理表達式 需要計算的表達式要包括在 "\${}"中
    println(s"1*3=${1*3}")

    println("------------------")
    // f插值
    val int1:Int = 8;
    val int2:Int = 32;
    val short1:Short = 8;
    val long1:Long = 8;
    val float1:Float = 8.0f;
    val double1:Double = 8.0d;
    println(f" I am int, value = $int1%d")
    println(f" I am int, value = $int1%d")
    println(f" I am int, value = $int2%e")
    println(f" I am int, value = $int2%E")
    println(f" I am short, value = $int1%d")
    println(f" I am long, value = $int1%d")
    println(f" I am float, value = $int1%f")
    println(f" I am double, value = $double1%f")
    println(f" I am double, value = $double1%s")

    println("------------------")
    // raw插值
    println(s"This is s-interpolation a\nb")
    println(raw"This is raw-interpolation a\nb")

  }
}
運行結果:
Hello, my name is guyue
1*3=3
------------------
 I am int, value = 8
 I am int, value = 8
 I am int, value = 3.200000e+01
 I am int, value = 3.200000E+01
 I am short, value = 8
 I am long, value = 8
 I am float, value = 8.000000
 I am double, value = 8.000000
 I am double, value = 8.0
------------------
This is s-interpolation a
b
This is raw-interpolation a\nb
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章