Kotlin语言(二):字符串类型

1、字符串定义

fun main() {
    println("--------------- 1、普通字符串 ---------------")
    val place = "四川省成都市高新区"
    val place2 = String(charArrayOf('a', 'b', 'c'))
    println(place)
    println(place2)

    println("---------------  2、原始字符串 ---------------")
    val address = """
        四川省
        成都市
        高新区
    """
    println(address)
}

2、字符串删除空格

fun main() {
    println("--------------- 普通字符串删除空格 ---------------")
    val place = " 四川省 成都市 高新区 "
    println("length:${place.length}  str1:->${place}<-")

    val str1 = place.trim()
    println("length:${str1.length}  str1:->${str1}<-")
    //length:11  str1:->四川省 成都市 高新区<-

    val str2 = place.trimStart()
    println("length:${str2.length}  str2:->${str2}<-")
    //length:12  str2:->四川省 成都市 高新区 <-

    val str3 = place.trimEnd()
    println("length:${str3.length}  str3:->${str3}<-")
    //length:12  str3:-> 四川省 成都市 高新区<-


    println("--------------- 原样字符串删除空格 ---------------")
    val address = """
        四川省
        成都市
        高新区
    """
    println("length:${address.length}  str4:->${address}<-")
    //length:41  str4:->
    //        四川省
    //        成都市
    //        高新区
    //    <-

    //trim()、trimStart()、trimEnd()同上

    //删除前、后、中间空格
    val str4 = address.trimIndent()
    println("length:${str4.length}  str4:->${str4}<-")
    //length:11  str4:->四川省
    //成都市
    //高新区<-

    val loaction = """
        /四川省
        /成都市
        /高新区
    """
    val str5 = loaction.trimMargin("/")
    println("length:${str5.length}  str4:->${str5}<-")
    //length:11  str4:->四川省
    //成都市
    //高新区<-
}

3、字符串比较

fun main() {
    val str1 = "abc"
    val str2 = String(charArrayOf('a', 'b', 'c'))

    println(str1.equals(str2)) //true:equals比较的是值
    println(str1 == str2)      //true:==比较的是值
    println(str1 === str2)     //false:===比较的是地址
}

4、字符串切割

fun main() {
    val str = "张三.李四.王五"
    val result: List<String> = str.split(".")
    println(result)
    //返回的是一个List:[张三, 李四, 王五]

    val str2 = "张三.李四-王五"
    val result2: List<String> = str2.split(".", "-")
    println(result2)
    //返回的是一个List:[张三, 李四, 王五]
}

5、字符串截取

fun main() {
    val path = "C:User/yole/kotlin-book/chapter.doc"

    //截取第5个字符之后的字符
    println(path.substring(5))//r/yole/kotlin-book/chapter.doc
    //截取前6个字符
    println(path.substring(0, 6)) //C:User
    println(path.substring(0..5)) //C:User
    //截取第一个r之前的字符
    println(path.substringBefore("r")) //C:Use
    //截取最后一个r之前的字符
    println(path.substringBeforeLast("r")) //C:User/yole/kotlin-book/chapte
    //截取第一个r之后的字符
    println(path.substringAfter("r")) ///yole/kotlin-book/chapter.doc
    //截取最后一个r之后的字符
    println(path.substringAfterLast("r")) //.doc
}

6、字符串替换

fun main() {
    val str1 = "abacABAC"
    //替换全部,区分大小写。结果:result11=#b#cABAC  result12=##acABAC
    val result11 = str1.replace('a', '#')
    val result12 = str1.replace("ab", "##")
    println("result11=$result11  result12=$result12")
    //替换全部,忽略大小写。结果:result13=@b@c@B@C  result14=@@ac@@AC
    val result13 = str1.replace('a', '@', true)
    val result14 = str1.replace("ab", "@@", true)
    println("result13=$result13  result14=$result14")
    //替换第一个,区分大小写。结果:result15=aBacABAC  result16=ABacABAC
    val result15 = str1.replaceFirst('b', 'B')
    val result16 = str1.replaceFirst("ab", "AB")
    println("result15=$result15  result16=$result16")


    val str2 = "abcdabcd"
    //把第一个c之前的字符串替换成%,如果未找到c则返回this。结果:%cdabcd
    val result21 = str2.replaceBefore('c', "%")
    val result22 = str2.replaceBefore("c", "%")
    println("result21=$result21  result22=$result22")
    //把第一个f之前的字符串替换成%,如果未找到f则返回NO。结果:NO
    val result23 = str2.replaceBefore('f', "%", "NO")
    val result24 = str2.replaceBefore("f", "%", "NO")
    println("result23=$result23  result24=$result24")
    //把最后一个c之前的字符串替换成%,如果未找到c则返回this。结果:%cd
    val result25 = str2.replaceBeforeLast('c', "%")
    val result26 = str2.replaceBeforeLast("c", "%")
    println("result25=$result25  result26=$result26")
    //把最后一个f之前的字符串替换成%,如果未找到f则返回NO。结果:NO
    val result27 = str2.replaceBeforeLast('f', "%", "NO")
    val result28 = str2.replaceBeforeLast("f", "%", "NO")
    println("result27=$result27  result26=$result28")


    val str3 = "GHIJGHIJ"
    //把第一个H之后的字符串替换成$,如果未找到则返回this。结果:GH$
    val result31 = str3.replaceAfter('H', "$")
    val result32 = str3.replaceAfter("H", "$")
    println("result31=$result31  result32=$result32")
    //把第一个K之后的字符串替换成$,如果未找到则返回NO。结果:NO
    val result33 = str3.replaceAfter('K', "$", "NO")
    val result34 = str3.replaceAfter("K", "$", "NO")
    println("result33=$result33  result34=$result34")
    //把最后一个H之后的字符串替换成$,如果未找到H则返回this。结果:GHIJGH$
    val result35 = str3.replaceAfterLast('H', "$")
    val result36 = str3.replaceAfterLast("H", "$")
    println("result35=$result35  result36=$result36")
    //把最后一个K之后的字符串替换成$,如果未找到K则返回NO。结果:NO
    val result37 = str3.replaceAfterLast('K', "$", "NO")
    val result38 = str3.replaceAfterLast("K", "$", "NO")
    println("result37=$result37  result38=$result38")


    val str4 = "0123456789"
    //替换区间。结果:result41=01---6789  result42=---3456789
    val result41 = str4.replaceRange(2..5, "---")
    val result42 = str4.replaceRange(0, 3, "---")
    println("result41=$result41  result42=$result42")


    val str5 = """
        0:1
        |2
        :3:4: 
    """
    //删除前面的空格
    val result51 = str5.replaceIndent()
    //|前面的空格删除,并用""替换|;margin和替换值均可自行设置
    val result52 = str5.replaceIndentByMargin()
    println("->$result51<-")
    //->0:1
    //|2
    //:3:4: <-
    println("->$result52<-")
    //->        0:1
    //2
    //        :3:4: <-
}

7、字符串模板

fun main() {
    //字符串模板:$xxx或者${xxx}
    val palce = "天安门"
    val diary = "今天天气晴朗,万里无云,我们去$palce 游玩,映入眼帘的是$palce${palce.length}个大字!"
    println(diary)
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容