Android---Kotlin 学习005

substring

字符串截取。相加与 java,kt 里面的 substring 函数支持 IntRange 类型(表示一个整数范围的类型)的参数,until 创建的范围不包括上限值。

const val NAME = "Jimmy's friend"
fun main(){

    val index = NAME.indexOf("\'") // 获取到 ' 所在位置的索引
    // val str = NAME.substring(0, index) // 这种是 java 里的写法
    val str = NAME.substring(0 until index) // TODO until 就是一个 IntRange 类型
    println(str)

}

这里的 until 就是 IntRange 类型。

split 

split 函数返回的是 List 集合数据,List 集合又支持结构语法特性,它允许你在一个表达式里给多个变量赋值,结构常用来简化变量的赋值。

示例:

const val NAMES = "Jack, Rose, Bot"
fun main(){

    //val split = NAMES.split(", ") // split 是一个 List 集合
    // split[0] // 拿里面的元素
    val (one, two, three) = NAMES.split(", ") //TODO 把拆出来的每一个部分,分别赋给() 里的变量,这就是结构语法
    println("$one $two $three")

}

结构语法:split 拆分出来的、放在 List 里的元素,可以一次性给一个表达式里的多个变量赋值。

replace

字符串替换。

示例:replace() 的第一个参数:正则表达式;第二个参数:lambda 表达式

fun main(){
    
    // TODO replace()
    val country = "The People's Republic of China."
    val replace = country.replace(Regex("[aeiou]")) {
        when (it.value) {
            "a" -> "8"
            "e" -> "2"
            "i" -> "5"
            "o" -> "7"
            "u" -> "1"
            else -> it.value
        }
    }
    println(country)
    println(replace)
}

*字符串比较

 在 kotlin 中,用 == 检查两个字符串中的字符是否匹配,用 === 检查两个变量是否指向内存堆上同一对象,而在 Java 中 == 做引用比较,做结构比较时用 equals 方法。

示例:

    val str1 = "Jason"
    val str2 = "Jason"
    println(str1 == str2)
    println(str1 === str2)

解释说明:第一个“==”表示比较 str1 和 str2 的内容是否相同,这里肯定是相同的,结果返回 true。 第二个"===" 比较的是 str1 和 str2 是否是同一个对象,这里返回 true,说明它们是同一个对象。原因是因为,在 java 的 JVM 中对字符串的存储是有一个 单独的地方, 叫字符串常量池,当我们创建 str1 = "Jason" 时,那么这个 "Jason" 字符串是在常量池里是不可变的。当我们创建 str2 = "Jason" 时,JVM 就不会在内存中再开辟一块空间来存放另一个  "Jason",而是让 str2 直接指向 str1 创建的 "Jason" 字符串的地址。所以,str1 和 str2 是同一个对象。

字符串的遍历

通过 forEach() 遍历字符串里的每一个字符。

示例:


fun main(){
    // TODO forEach
    "HLLXY".forEach {
        print("$it+")
    }
}

猜你喜欢

转载自blog.csdn.net/qq_44950283/article/details/134900606