第三章 字符串¶
在Scala中,字符串也是不可变对象。
创建字符串¶
var greeting = "Hello, world"
// or
var greeting:String = "Hello, world"
如果需要使用可变字符串,可以使用 StringBuilder 类。
字符串长度¶
使用 length() 获取字符串长度。
object Demo {
def main(args: Array[String]) {
var palindrome = "Dot saw I was Tod";
var len = palindrome.length();
println( "String Length is : " + len );
}
}
拼接字符串¶
string1.concat(string2);
// or
string1 + string2
格式化字符串¶
可以使用 printf 或者 format 来格式化字符串。 String 类有一个等价类的方法, format() ,它返回一个 String 对象,而不是一个 PrintStream 对象。
scala > "%.2f".format(1212)
1212.00
字符串插值¶
字符串插值允许用户将变量的引用直接嵌入到处理字符串字面量中。例如:
val name = "James"
println(s"Hello, $name") //Hello, James
scala提供了三种字符串插值方法: s 、 f `` 和 ``raw
格式化插值器f¶
在任何字符串字面量前追加 f ,就可以创造一个简单的格式化字符串,类似于其他语言中的 printf 。
当使用插值器f时,所有变量的引用应该跟随 printf 风格的格式字符串,如同 %d 。
例如:
val height = 1.9d
val name = "James"
println(f"$name%s is $height%2.2f meters tail") // James is 1.90 meters tall
插值器 f 是类型安全的。如果你试图传递一个只能工作于整数的格式化字符串,却又传了一个浮点数,编译器会发出一个错误。
插值器raw¶
插值器 raw 和插值器 s 相似,不同的是它不对字符串字面量执行转义。
scala> s"a\nb"
res0: String =
a
b
插值器 s 将字符 \n 替换成了回车符。而插值器 raw 不会这么做。
scala> raw"a\nb"
res1: String = a\nb
当你想要避免有表达式(例如 \n 变成回车)时,插值器 raw 是很有用的。