字串
不管在什麼程式裡,文字的處理都是很重要的一部分,在這裡我們會認識一些跟字串打交道的方法
substring
substring可以讓我們擷取自串裡面的一小段文字,把這一小段文字變成新的字串丟出來給我們:
fun main() {
val className = "Kuro's class"
val indexOfApostrophe = className.indexOf('\'')
val teacherName = className.substring(0 until indexOfApostrophe)
println(teacherName)
}
在indexOf裡面我們看到我們尋找的字元是 '\'' ,這是因為我們要尋找的單引號是一個有特殊意義的字元,所以我們不能直接使用 ''' ,這樣編譯器沒辦法知道我們是想用字元符號還是文字的單引號。所以我們需要在前面加上一個跳脫字元(\)來跟編譯器說後面這一個字是一個文字,而不是一個有特殊意義的符號。接下來我們來認識一些常用的跳脫字元組成的特殊文字:
\t
Tab鍵
\b
退回鍵
\n
換行
\"
雙引號
\'
單引號
\\
反斜線
\$
錢字號
\u
Unicode字元
equals(==)
equals(==)可以比對兩個字串是不是“完全相等”:
fun main() {
val name = "Kuro"
println("Hello, $name!" == "Hello, Kuro!")
println("Hello, $name!" == "Hi, Kuro!")
}
matches
matches可以比對字串是不是符合“特定格式”:
fun main() {
val phoneNumber = "0933225511"
println(phoneNumber.matches(Regex("^(0|[+]886)9\\d{8}$")))
// 檢測是不是符合台灣手機格式
}
這邊我們看到了一串看起來很複雜的文字("^(0|[+]886)9\\d{8}$")這個我們稱呼他為“正規表示式”,這邊我們使用下面的工具網站來介紹什麼事正規表示式
replace
replace有四種模式,接下來的範例可以來比較四種模式的差別:
fun main() {
val text = "abcdefghi"
println(text.replace('a', 'e'))
println(text.replace("ab", "de"))
println(text.replace(Regex("[aeiou]"), "ww"))
println(text.replace(Regex("[aeiou]")){ it.value.uppercase() })
}
split
split可以讓我們用某幾個字元把整個字串切開來變成一個字串列表:
fun main() {
val numberText = "1/3/5/7/9/10"
val numbers = numberText.split('/')
for (number in numbers) {
println(number)
}
}
另外split也支援字串跟正規表示式的切割,使用方法是一樣的,我們可以自行試試看比較差異
Unicode
Unicode中文叫做萬國碼,是一個由非營利機構Unicode聯盟維護的字元編碼。創立這個字元編碼的宗旨就是“讓Unicode編碼取代現有的其他字元編碼”,因為現有的其他編碼沒辦法擴充空間有限,而且沒辦法支援多種語言。目前最新的版本為2023年9月12日發布的15.1.0版本,總共收錄了149,813個字元。下面我們來介紹要怎麼使用Unicode字元:
fun main() {
val text = "\u2235"
println(text)
}
Last updated
Was this helpful?