文章目录
- scala中的字符串
-
- 引号
- 常用内置函数
-
- [length 获取字符串长度](#length 获取字符串长度)
- [charAt 字符串元素访问](#charAt 字符串元素访问)
- [substring 获取字串](#substring 获取字串)
- [indexOf 获取字串位置](#indexOf 获取字串位置)
- [replace 字符串替换](#replace 字符串替换)
- [toLowerCase,toUpperCase 字符串大小写转换](#toLowerCase,toUpperCase 字符串大小写转换)
- [trim 去除首位空白符](#trim 去除首位空白符)
- [split 字符串切割以及查看](#split 字符串切割以及查看)
- [startsWith,endsWith 判断开始结束,只接受字符串](#startsWith,endsWith 判断开始结束,只接受字符串)
- [contains 是否包含,字符串,字符都可以接受](#contains 是否包含,字符串,字符都可以接受)
- [format 格式化](#format 格式化)
- [字符串穿插 s,f](#字符串穿插 s,f)
- [字符串转意 \,raw](#字符串转意 ,raw)
- 字符串拼接,重复,比较
- 注意事项
scala中的字符串
引号
单引号
单引号创建字符
val str1 = 'A'
双引号
如果使用单引号创建字符串则报错
创建字符串,字符串是不可变对象
val str2 = "abcdefg"
三引号
创建多行字符串,三引号 |边界符号,文本都以边界符启始,stripMargin去除边界符前面的空格到遇到竖线为止
scala
val rawStr =
"""
|ldsx
|ldsx2
|ldsx3
|{"ldsx":"dsts"}
|""".stripMargin
常用内置函数
var test_str: String = " This is a test string "
length 获取字符串长度
scala
val test_str_len = test_str.length
charAt 字符串元素访问
字符串访问str.charAt(index) 无法反方向获取索引,索引不能超过字符串长度否则报错
scala
val test_char = test_str.charAt(3)
substring 获取字串
获取子字符串,str.substring(s,e),索引不能超过限制否则报错,不设置end默认取到最后,
scala
val substr = test_str.substring(1)
indexOf 获取字串位置
查找,子字符串第一次出现在索引的位置,元素不存在返回-1
scala
val get_index = test_str.indexOf("This")
val get_index2 = test_str.indexOf("h")
replace 字符串替换
替换 字符串中所有字符全部替换,注意单字符使用'',字符串使用"",元素不存在则无变动
scala
val replace_str = test_str.replace('T','V')
val replace_str = test_str.replace("HELLO","HI")
toLowerCase,toUpperCase 字符串大小写转换
scala
val lowerstr = test_str.toLowerCase
val upperstr = test_str.toUpperCase
trim 去除首位空白符
scala
val trimstr = test_str.trim
split 字符串切割以及查看
切割后print打印出的是数组内存地址,如果想要查看内容需要配合使用mkstring,map,toseq,deep
scala
val splitstr = test_str.split(" ")
//拼接打印
println(splitstr,splitstr.mkString("[", ", ", "]"))
//([Ljava.lang.String;@6aaa5eb0,[, This, is, a, test, string])
println(splitstr,splitstr.toSeq)
//([Ljava.lang.String;@6aaa5eb0,WrappedArray(, This, is, a, test, string))
//for循环展示
splitstr.foreach(println)
//This
//is
//a
//..
.
//可以查看多维数组结构
println(splitstr,splitstr.deep)
//([Ljava.lang.String;@6aaa5eb0,Array(, This, is, a, test, string))
val arr:Array[Any] = Array(Array(1, 2), Array(3, 4))
println(arr.deep)
//Array(Array(1, 2), Array(3, 4))
println(arr.toSeq)
//WrappedArray([I@246ae04d, [I@62043840)
startsWith,endsWith 判断开始结束,只接受字符串
即便是单字符也需要使用双引号表示字符串否则报错,返回bool值
scala
val start_str = test_str.startsWith("T")
println(start_str)
val end_str = test_str.endsWith("ok")
println(end_str)
contains 是否包含,字符串,字符都可以接受
返回bool值
scala
//包含contains
val contains_str = test_str.contains("This")
println(contains_str)
format 格式化
%s占位符号,S,s会影响传入数据的大小写
scala
// %S 全部变大写 %s保持原结构
val format_str2 = String.format("HELLO,%S","Scala")
println(format_str2)
//多参数传递,直接加参就好了
val format_str3 = String.format("HELLO,%S,%s","Scala","LDSX")
println(format_str3)
//HELLO,SCALA,LDSX
字符串穿插 s,f
scala
//Scala 提供了字符串插值功能,其中 s,f 字符串插值允许你在字符串中嵌入变量或表达式。
val test_str:String = "hello"
// s,f效果相同
val format_str = s"format info: $test_str"
val format_str2 = f"format info: $test_str"
println(format_str)
//format info: hello
字符串转意 ,raw
\n,\t,换行,tab 使用 \ 禁止转义
scala
//字符串转义
val escapedstr = "Hello,\n \\n是换行"
//直接使用raw 无视转义
val escapedstr2 = raw"hello,\n"
字符串拼接,重复,比较
两个字符串之间支持使用 +
,concat
拼接,一个字符串也支持与int进行计算,字符串之间可以比较
scala
val test_str2: String = "test info"
println(test_str2 + " info")
//test info info
val str1 = "Hello, "
val str2 = "Scala!"
val result = str1.concat(str2)
println(result)
// 输出: Hello, Scala!
println(test_str2*2)
//test infotest
println(test_str2 == test_str2)
//true
隐式转换:在 Scala 中,你可以直接将整数(Int
)与字符串进行拼接,Scala 会自动将整数转换为字符串。这是因为 Scala 的 Any
类型的 toString
方法被重载,可以处理数值类型。
scala
var a = 10
var b = 20
println("a + b = " + (a + b)) // 输出: a + b = 30
由于 +
操作符的左侧是一个字符串,Scala 会自动调用 30
的 toString
方法,将其转换为字符串 "30"
,然后与左侧的字符串进行拼接,得到 "a + b = 30"
注意事项
字符 与 字符串的定义方式 分别为单引'',双引""
startsWith,endsWith 只接受字符串