在 Scala 中,String 是一个不可变的对象,所以该对象不可被修改。这就意味着如果修改字符串就会产生一个新的字符串对象。但其他对象,如数组就是可变的对象。
字符串基本使用
Scala中字符串的数据类型是java.lang.String。如下面的代码所示:
println("Hello, world".getClass.getName) // java.lang.String
实际上,Scala String就是Java String,所以可以使用所有常规的Java字符串方法。和Java中一样,在Scala中字符串对象有个length方法,可返回该字符串的长度,即该字符串包含的字符个数。如下代码所示:
val s = "Hello, world"
println(s.length) // 12
两个字符串可以使用+号连接起来:
println("Hello" + " world") // "Hello world"
但是因为Scala提供了隐式转换的魔法,String实例还可以访问StringOps类的所有方法,因此可以使用它们做许多其他事情,比如将String实例视为字符序列。因此,可以使用foreach方法遍历字符串中的每个字符,Scala将字符串当作一个字符序列。例如,我们可以遍历字符串,访问字符串中的每个字符:
"hello".foreach(println) // 遍历字符串中的每个字符
输出结果如下所示:
h
e
l
l
o
也可以将字符串视为for循环中的字符序列。如下面的代码所示:
for (c <- "hello") println(c)
输出结果如下所示:
h
e
l
l
o
Scala中字符串有一个getBytes方法,返回每个字符对应的AscII值数组。代码如下所示:
s.getBytes.foreach(println)
输出结果如下所示:
72
101
108
108
111
44
32
119
111
114
108
100
因为顺序集合上有很多可用的方法,所以也可以使用其他函数方法,如filter,以及其他操作方法。例如:
val result = "hello world".filter(_ != 'l')
println("result=" + result) // result=heo word
"scala".drop(2).take(2).capitalize // Al
可通过索引访问字符串中的一个字符。如下面的代码所示:
// 访问字符串中的一个字符
println("hello".charAt(0)) // 'h'
println("hello"(0)) // 'h'
println("hello"(1)) // 'e'
字符串也可以使用运算符,例如:
val greeting = "Hello, " + "World"
val matched = (greeting == "Hello, World")
val theme = "Na " * 16 + "Batman!"
输出结果如下所示:
greeting: String = Hello, World
matched: Boolean = true
判断字符串相等性
在Scala中,字符串是按照内容来进行比较的。下面的代码演示了如下判断字符串的相等性:
val s1 = "Hello"
val s2 = "Hello"
val s3 = "H" + "ello"
println("s1 == s2: " + (s1 == s2)) // true
println("s1 == s3: " + (s1 == s3)) // true
println("-------------------------")
val s4: String = null
println("s3 == s4: " + (s3 == s4)) // false
println("s4 == s3: " + (s4 == s3)) // false
println("-------------------------")
val s11: String = null
val s22: String = null
println("s11 == s22: " + (s11 == s22)) // true
println("-------------------------")
val a = "Marisa"
val b = "marisa"
println("a == b: " + (a == b)) // false
println("a.equalsIgnoreCase(b):" + (a.equalsIgnoreCase(b))) // true
© 版权声明
本站网络名称:
知趣
本站永久网址:
https://www.qubaa.top
网站侵权说明:
本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长删除处理。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
THE END
暂无评论内容