每天學(xué)一點(diǎn) Kotlin -- 字符串和字符

----《第一季Kotlin崛起:次世代Android開發(fā) 》學(xué)習(xí)筆記

總目錄:每天學(xué)一點(diǎn) Kotlin ---- 目錄
上一篇:每天學(xué)一點(diǎn) Kotlin -- 控制流:循環(huán)
下一篇:每天學(xué)一點(diǎn) Kotlin -- 函數(shù):初次見面

1. 字符串

1.1 同其他的語言一樣近顷,單個(gè)的符號(hào)或文字戳杀,稱為字符疚漆,縮寫為 Char。超過2個(gè)字符的組合就是字符串奈附。
1.2 包含在一對(duì)雙引號(hào)中間的值全度,稱為字符串字面量 -- 注意:是英文的雙引號(hào)。

2. 字符串的常用方法

2.1 Kotlin 中字符串同樣也可以用+連接兩個(gè)字符串
2.2 判斷字符串為空的方法 isEmpty()
2.3 獲取字符串中字符的數(shù)目 count() 或 length斥滤。

fun testString_01(){
    var str = "學(xué)習(xí)Kotlin"
    println(str.isEmpty())
    println(str.count())
    println(str.length)
}

2.4 其他用法

fun testString_02() {
    var str = "學(xué)習(xí)Kotlin将鸵,Kotlin是一門比較新的編程語言。hello world, hello kotlin"
    var str2 = "學(xué)習(xí)Kotlin佑颇,Kotlin是一門比較新的編程語言顶掉。hello world, hello kotlin"
    var str3 = "學(xué)習(xí)Kotlin,Kotlin是一門比較新的編程語言漩符。hello world"

    // 獲得指定位置的字符
    println("獲得指定位置的字符")
    println(str.get(3))
    println(str[3])
    println(str.elementAt(3))

    // 截取一段字符串
    println("截取一段字符串")
    println(str.substring(5))
    println(str.substring(3, 8))

    // 使用索引
    println("使用索引")
    println(str.indexOf("K"))
    println(str.indexOf('K'))
    println(str.substring(str.indexOf("一")))
    println(str.substring(str.indexOf("一"), str.length - 3))
    println("str.indices = " + str.indices)

    // 是否包含某個(gè)字符或字符串:contains
    println("是否包含某個(gè)字符或字符串")
    println(str.contains('K'))
    println(str.contains("hello"))

    // 判斷兩個(gè)字符串的內(nèi)容是否相同
    println("判斷兩個(gè)字符串的內(nèi)容是否相同")
    println("str == str2: " + (str == str2))
    println("str.contentEquals(str2): " + str.contentEquals(str2))
    println("str == str3: " + (str == str3))
    println("str.contentEquals(str3): " + str.contentEquals(str3))

    // 舍棄子字符串
    println("舍棄子字符串")
    println("舍棄前6個(gè)字符:" + str2.drop(6))
    println("舍棄后7個(gè)字符:" + str3.dropLast(7))
    var str4 = "   兩頭有空格 的 字 符 串 -- 哈 哈 哈  "
    var str5 = str4
    val st6 = str5.dropWhile { it.isWhitespace() }
    println("去掉前面的空格: " + st6)
    // 去掉前面的空格一喘,并把字符串從尾部開始所有含有“哈”或空格的字符串去掉
    var str7 = str4;
    val str8 = str7.dropWhile { it.isWhitespace() }.dropLastWhile { it == '哈' || it.isWhitespace() }
    println("去掉空格和 哈 的結(jié)果:" + str8)

    // 獲取子字符串
    println("獲取子字符串: take")
    println("str.take(7) = " + str.take(7))  // 獲取前面7個(gè)
    println("str.takeLast(7) = " + str.takeLast(7)) // 獲取后面7個(gè)

    // 替換功能
    println("替換功能")
    var str9 = str
    var str9_1 = str9.replace("hello", "你好")
    var str10 = str;
    var str10_1 = str10.replace('h', 'H')
    println("替換 hello 的結(jié)果:" + str9_1)
    println("替換 h 的結(jié)果:" + str10_1)
    /*
    替換有跟多細(xì)致的方法驱还,比如把所有的數(shù)字/字母替換掉嗜暴,替換限定在某段范圍內(nèi),替換限定在某個(gè)字符/字符串的前/后面
    只替換第一次或最后一次出現(xiàn)的字符等议蟆。
     */
}

2.5 Kotlin 還“抄襲”了 Swift 中的一點(diǎn)闷沥,就是支持多行字符串,寫法是用一對(duì)三引號(hào)包裹起來咐容。這樣的另一個(gè)好處舆逃,在字符串中就可以不用考慮轉(zhuǎn)義字符的事情了。示例如下:

fun testString_03() {
    var str = """
        第一行內(nèi)容: "雙引號(hào)里面的內(nèi)容"
        第二行內(nèi)容: 'a', 'b' 
        第三行內(nèi)容: \n, /t
    """
    println(str)
}

打印結(jié)果:

        第一行內(nèi)容: "雙引號(hào)里面的內(nèi)容"
        第二行內(nèi)容: 'a', 'b' 
        第三行內(nèi)容: \n, /t

注意:多行字符串打印出來后,每一行前面的縮進(jìn)也是字符串中的內(nèi)容路狮,也會(huì)被打印出來虫啥。

3. 字符

3.1 Kotlin 中 Char 定義字符。字符用單引號(hào)包含奄妨。
3.2 注意:一個(gè)表情文字并不是一個(gè)字符涂籽。
3.3 和字符串一樣,字符也有很多可用的方法:

fun testString_04() {
    val me = '我'
    val five = '5'

    println(me.isLetter())  // 是否是文字
    println(five.isDigit()) // 是否是數(shù)字

    println(five - 1)  // 字符的上一個(gè)
    println(five + 1) // 字符的下一個(gè)
    println(me + 1)
    println(me - 1)

    // 獲取字符的編碼
    println("獲取字符的編碼: " + me.toInt())

    // 兩個(gè)字符的區(qū)間
    println("兩個(gè)字符的區(qū)間")
    println(me.until('你'))
    println(me.until('他'))
}
相關(guān)代碼:https://gitee.com/fzq.com/test-demo
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末砸抛,一起剝皮案震驚了整個(gè)濱河市评雌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌直焙,老刑警劉巖景东,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異奔誓,居然都是意外死亡斤吐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門厨喂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來曲初,“玉大人,你說我怎么就攤上這事杯聚【势牛” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵幌绍,是天一觀的道長颁褂。 經(jīng)常有香客問我,道長傀广,這世上最難降的妖魔是什么颁独? 我笑而不...
    開封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮伪冰,結(jié)果婚禮上誓酒,老公的妹妹穿的比我還像新娘。我一直安慰自己贮聂,他們只是感情好靠柑,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吓懈,像睡著了一般歼冰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上耻警,一...
    開封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天隔嫡,我揣著相機(jī)與錄音甸怕,去河邊找鬼。 笑死腮恩,一個(gè)胖子當(dāng)著我的面吹牛梢杭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播秸滴,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼式曲,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了缸榛?” 一聲冷哼從身側(cè)響起吝羞,我...
    開封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎内颗,沒想到半個(gè)月后钧排,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡均澳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年恨溜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片找前。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡糟袁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出躺盛,到底是詐尸還是另有隱情项戴,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布槽惫,位于F島的核電站周叮,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏界斜。R本人自食惡果不足惜仿耽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望各薇。 院中可真熱鬧项贺,春花似錦、人聲如沸峭判。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽朝抖。三九已至啥箭,卻和暖如春谍珊,著一層夾襖步出監(jiān)牢的瞬間治宣,已是汗流浹背急侥。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留侮邀,地道東北人坏怪。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像绊茧,于是被迫代替她去往敵國和親铝宵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容