Kotlin - 字符串模版 String

String字符串

//使用for循环进行遍历
for (s in str) print(s + ",")  //H,e,l,l,o, ,K,o,t,l,i,n,

plus ()字符串拼接,可传入任意类型
val str = "Hello Kotlin"
val num = "123456123"

println(str + num)    //Hello Kotlin123456123
println(str.plus(Person())) //Hello KotlinPerson{name='Default', age=0}
println(str[1])    //e

drop (去除的个数)

dropLast (去除的个数)

dropWhile (predicate)

dropLastWhile (predicate)

去除前N个元素

去除后N个元素

根据条件正向去除元素,下一个元素不满足时停止去除

根据条件反向去除元素,下一个元素不满足时停止去除

take (获取的个数)

takeLast (获取的个数)

takeWhile (predicate)

takeLastWhile (predicate)

获取前N个元素,如果N大于字符串长度则返回整个字符串

获取后N个元素,如果N大于字符串长度则返回整个字符串

根据条件正向获取元素,下一个元素不满足时停止获取

根据条件反向获取元素,下一个元素不满足时停止获取

subSequence (开始位置,结束位置)

subSequence (Range)

subString (开始位置)

subString (开始位置,结束位置)

subString (Range)

截取两个索引之间的字符串,不包括结束位置上的元素

截取该区间索引之间的字符串,包括结束位置上的元素

从开始位置一直截取到最后

截取两个索引之间的字符串,不包括结束位置上的元素

截取该区间索引之间的字符串,包括结束位置上的元素

val str = "Hello Kotlin"
val num = "123456123"

println(num.drop(3))          //456123
println(num.substring(3))     //456123
println(num.dropLast(3))      //123456
println(num.substring(0, num.length - 3))  //123456
println(num.dropWhile { it == '1' })       //23456123
println(num.substring(1..3))               //234

println(num.take(3))        //123
println(num.takeLast(3))    //123
println(num.takeWhile { it == '1' || it == '2' })   //12
println(num.takeLastWhile { it == '1' })            //结果为空

println(str.subSequence(2,4))    //ll
println(str.subSequence(2..4))   //llo
println(str.substring(2))        //llo Kotlin
println(str.substring(2,4))      //ll
println(str.substring(2..4))     //llo

toUpperCase ()

toLowerCase ()

全部转为大写

全部转为小写

reversed ()将元素倒序排列

trim ()

trimStart ()

trimEnd () 

同时去除首尾空格

去除开头空格

去除结尾空格

replace (旧值,新值,默认false不忽略大小写)

replace (正则表达式,新值)

replaceFirst (旧值,新值)

replaceBefore (目标值,添加值)

replaceBeforeLast (目标值,添加值)

replaceAfter (旧值,新值)

replaceAfterLast(目标值,添加值)

旧值替换成新值

替换满足正则表达式的部分为新值

替换满足条件的第一个字符/字符串

去掉满足条件的字符/字符串之前的元素,并在之前添加新元素

去掉最后一个满足条件的字符/字符串之前的元素,并在之前添加新元素

去掉满足条件的字符/字符串之后的元素,并在之后添加新元素

去掉最后一个满足条件的字符/字符串之后的元素,并在之后添加新元素

split (Regex ("正则表达式"))

split (Pattern.compile ("正则表达式"))

split (字符/字符串)

通过正则表达式或者字符/字符串进行分割,返回的是数组
val str = "Hello Kotlin"
val num = "123456123"

println(str.toUpperCase())  //HELLO KOTLIN
println(str.toLowerCase())  //hello kotlin
println(str.reversed())     //niltoK olleH

println(str.replace("Hello", "NiHao"))   //NiHao Kotlin
println(str.replace("hello", "NiHao"))   //Hello Kotlin
println(str.replace("Hello", "NiHao", true))   //NiHao Kotlin
println(str.replace("hello", "NiHao", false))   //Hello Kotlin
println(num.replace('1', '9'))   //923456923
println(num.replace(Regex("[0-9]+"), "a"))
println(num.replaceFirst('2', '9'))  //193456123
println(num.replaceBefore('4', "99"))    //99456123

println(num.split('2')) //[1, 34561, 3]

查 

get (索引)根据索引获取字符串中的元素,推荐使用操作符 [ ]

startsWith (字符/字符串)

endsWith (字符/字符串)

是否以目标字符/字符串开始,重载方法可指定起始位置和是否忽略大小写

是否以目标字符/字符串结尾,重载方法可指定起始位置和是否忽略大小写

count ()

count (Predicate)

获取字符串长度,推荐用 .length

返回符合条件的字符个数

frist ()

frist (Predicate)

fristOrNull ()

fristOrNull (Predicate)

同理 Last、find

返回第一个元素,没有匹配结果抛异常( 相当于str[0]、str.get(0) )

返回第一个满足条件的元素,没有匹配结果抛异常

返回第一个元素,没有匹配结果返回null

返回第一个满足条件的元素,没有匹配结果返回null

同理Last、find

isEmpty ()

isNotEmpty ()

isNullOrEmpty ()

isBlank ()

isNotBlank ()

isNullOrBlank ()

str.length == 0,,不能直接用于可空的字符串

str.length > 0,不能直接用于可空的字符串

str == null || str.length ==0

str.length == 0 || str.空格数 == str.length,不能直接用于可空的字符串

上面取反,不能直接用于可空的字符串

str == null || str.isBlank()

indexOf (字符/字符串,默认0开始位置,默认false忽略大小写)

lastIndexOf (字符/字符串,默认length-1位置,默认false忽略大小写)

indexOfFrist (Predicate)

indexOfLast (Predicate)

查找目标字符/字符串第一次在原字符串中出现的位置

查找目标字符/字符串最后一次在原字符串中出现的位置

根据条件,查找目标字符第一次在原字符串中出现的位置

根据条件,查找目标字符最后一次在原字符串中出现的位置

val str = "Hello Kotlin"
val num = "123456123"

println(str[6])     //K
println(str.get(6)) //K

println(num.first())                //1
println(num.first { it == '4' })    //4
println(num.count())                //9
println(num.length)                 //9
println(num.count { it == '1' })    //2
println(num.startsWith('1'))

println(str.indexOf('l'))                //2
println(num.lastIndexOf("23"))           //7
println(str.indexOfFirst { it == 'l' })  //2
println(str.indexOfLast { it =='l' })    //9

字符串模版

符号说明
"文本内容"转义字符串(和Java一样)
"""文本内容"""原生字符串(里面内容原原本本打印,包括换行和转义字符)
$引用变量
${}调用方法和运算
//增
var str = "2" + 32   //用 + 操作符连接字符串,第一个元素要是字符串
str += "00"  //字符串拼接
println(str) //打印:23200
 
//改
val aa = "小明和朋友玩得很开心!"
val bb = "小红"
println(aa.replace("朋友", bb))    //打印:小明和小红玩得很开心!
 
//查
val str2 = "今天天气不错"
println(str2[5]) //字符串元素可通过索引拿到,打印:错
for (s in str2) print(s + ",") //遍历
 
//字符串模版
val person = Person("John", 23)
println("姓名:${person.name},年龄:${person.age}")   //打印:姓名:John,年龄:23
 
val a = 5
val b = 3
println("一共有${a+b}个人")    //打印:一共有8个人
println("$a+$b=${show(5, 3)}") //打印:5+3=8
 
val answer = true
println("答案是:${if(answer)"正确" else "错误"}")    //打印:答案是:正确
 
//打印:映入眼帘的是"紫禁城"3个大字
val place = "紫禁城"
println("映入眼帘的是\"" + place + "\"闪闪的" + place.length + "个大字")    //JAVA拼接方式
println("映入眼帘的是\"$place\"闪闪的${place.length}个大字")                //斜杠转义方式
println("""映入眼帘的是"$place"闪闪的${place.length}个大字""")              //"""原生字符串
println("去${place}玩看到${place.length}个大字")   //去紫禁城玩看到3个大字
 
//打印美元符号
val c = 4.22
println("价格是$$c")   //打印:价格是$4.22
 
//正则表达式
val pattern = """^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}"""
val email = "google@gmail.com"
 
val regex1 = Regex(pattern) //方式一:构造
val regex2 = pattern.toRegex()  //方式二:扩展函数
 
println(regex1.matches(email))  //精确匹配
println(regex1.containsMatchIn(email))  //包含匹配
 
val str1 = "AB12CD34EF"
val regex3 = Regex("""\d+""")
println(regex3.find(str1)?.value)   //打印:12,返回查找到的第一个匹配的字符串,没找到返回null
regex3.findAll(str1).forEach { e -> print(e.value + ",") }   //打印:12,34, 查找所有匹配的字符串,返回的Sequence是可以迭代的集合,元素类型是MatchResult
println(regex3.replace(str1, "-"))   //打印:AB-CD-EF,替换
println(regex3.split(str1)) //打印:[AB, CD, EF],若传入limit值表示分割几次就不分割了。默认为0表示符合条件就分割
 
fun show(a: Int, b: Int) = a + b
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值