简介
在 Scala 中,字符串的类型实际上是 Java String,它本身没有 String 类。
在 Scala 中,String 是一个不可变的对象,所以该对象不可被修改。这就意味着你如果修改字符串就会产生一个新的字符串对象。
String在操作时可以被隐式转换成StringOps对象,通过StringOps对象给字符串添加了上百种操作,如:”hello”.intersect(“world”)找出两个字符串中共同的字符、toString方法转换成字符串、toInt、toDouble转换成数字等方法。
创建字符串
var greeting:String = "Hello World!";
或
//Scala 编译器会自动推断出字符串的类型为String
var greeting = "Hello World!";
StringBuilder
String对象是不可变的,如果需要创建一个可以修改的字符串,可以使用StringBuilder类。
object Test {
def main(args: Array[String]) {
val buf = new StringBuilder;
buf += 'a'
buf ++= "bcdef"
println( "buf is : " + buf.toString );
}
}
简单实例
object TestString {
def main(args: Array[String]) {
val cc=TestString()
println("大写转换:"+cc.changeUpper("abcde"))
println("小写转换:"+cc.changeLower("QWER"))
println("顺序反转:"+cc.reverseStr("123456789"))
println("删除指定位置的元素:"+cc.dropElement("0987654321"))
println("获取指定位置的元素:"+cc.subString("1234567"))
println("获取序列:"+cc.sequnceStr("qazxsw"))
println("添加元素:"+cc.addElement("1234qwer"))
println("获取元素所在的下标:"+cc.getIndex("a"))
println("获取指定下标的元素值:"+cc.getCharAt(2))
println("是否包含指定字符:"+cc.containsIs("g"))//返回值是true或者false
}
case class TestString(){
lazy val str="abcdefghijklmnopqrstuvwxyz"
//大写转换
def changeUpper(str:String)={
str.map(_.toUpper)
}
//小写转换
def changeLower(str:String)={
str.map(_.toLower)
}
//反转
def reverseStr(str:String)={
str.reverse
}
//剔除元素
def dropElement(str:String)={
str.drop(2)//剔除下标为2之前的元素
}
//截取指定位置的元素
def subString(str:String)={
str.slice(1,3)//前包后不包
}
//获取序列
def sequnceStr(str:String)={
val s: Seq[Char] = str
s
}
//获取序列
def addElement(str:String)={
str.concat("hello")
}
//获得下标
def getIndex(str2:String)={
str.indexOf(str2)
}
//获取指定下标的元素
def getCharAt(i:Int)={
str.charAt(i)
}
//是否包含该元素
def containsIs(foo:String) ={
str.contains(foo)
}
}
}
忠于技术,热爱分享。欢迎关注公众号:java大数据编程,了解更多技术内容。