文章目錄
- scala中的字符串
- 引號
- 單引號
- 雙引號
- 三引號
- 常用內置函數
- length 獲取字符串長度
- charAt 字符串元素訪問
- substring 獲取字串
- indexOf 獲取字串位置
- replace 字符串替換
- toLowerCase,toUpperCase 字符串大小寫轉換
- trim 去除首位空白符
- split 字符串切割以及查看
- startsWith,endsWith 判斷開始結束,只接受字符串
- contains 是否包含,字符串,字符都可以接受
- format 格式化
- 字符串穿插 s,f
- 字符串轉意 \,raw
- 字符串拼接,重復,比較
- 注意事項
scala中的字符串
引號
單引號
單引號創建字符
val str1 = 'A'
雙引號
如果使用單引號創建字符串則報錯
創建字符串,字符串是不可變對象
val str2 = "abcdefg"
三引號
創建多行字符串,三引號 |邊界符號,文本都以邊界符啟始,stripMargin去除邊界符前面的空格到遇到豎線為止
val rawStr ="""|ldsx|ldsx2|ldsx3|{"ldsx":"dsts"}|""".stripMargin
常用內置函數
var test_str: String = " This is a test string "
length 獲取字符串長度
val test_str_len = test_str.length
charAt 字符串元素訪問
字符串訪問str.charAt(index) 無法反方向獲取索引,索引不能超過字符串長度否則報錯
val test_char = test_str.charAt(3)
substring 獲取字串
獲取子字符串,str.substring(s,e),索引不能超過限制否則報錯,不設置end默認取到最后,
val substr = test_str.substring(1)
indexOf 獲取字串位置
查找,子字符串第一次出現在索引的位置,元素不存在返回-1
val get_index = test_str.indexOf("This")
val get_index2 = test_str.indexOf("h")
replace 字符串替換
替換 字符串中所有字符全部替換,注意單字符使用’',字符串使用"",元素不存在則無變動
val replace_str = test_str.replace('T','V')
val replace_str = test_str.replace("HELLO","HI")
toLowerCase,toUpperCase 字符串大小寫轉換
val lowerstr = test_str.toLowerCase
val upperstr = test_str.toUpperCase
trim 去除首位空白符
val trimstr = test_str.trim
split 字符串切割以及查看
切割后print打印出的是數組內存地址,如果想要查看內容需要配合使用mkstring,map,toseq,deep
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值
val start_str = test_str.startsWith("T")
println(start_str)
val end_str = test_str.endsWith("ok")
println(end_str)
contains 是否包含,字符串,字符都可以接受
返回bool值
//包含contains
val contains_str = test_str.contains("This")
println(contains_str)
format 格式化
%s占位符號,S,s會影響傳入數據的大小寫
// %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 提供了字符串插值功能,其中 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 使用 \ 禁止轉義
//字符串轉義
val escapedstr = "Hello,\n \\n是換行"//直接使用raw 無視轉義
val escapedstr2 = raw"hello,\n"
字符串拼接,重復,比較
兩個字符串之間支持使用 +
,concat
拼接,一個字符串也支持與int進行計算,字符串之間可以比較
val test_str2: String = "test info"
println(test_str2 + " info")
//test info infoval 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
方法被重載,可以處理數值類型。
var a = 10
var b = 20
println("a + b = " + (a + b)) // 輸出: a + b = 30
由于 +
操作符的左側是一個字符串,Scala 會自動調用 30
的 toString
方法,將其轉換為字符串 "30"
,然后與左側的字符串進行拼接,得到 "a + b = 30"
注意事項
字符 與 字符串的定義方式 分別為單引’',雙引""
startsWith,endsWith 只接受字符串