kotlin 里面的字符串的各种操作

92 阅读2分钟
  • 字符串的截取 substring

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

val index :Int =NAME.indexOf("'")
val str2= NAME.substring(0,index) //Java  写法
val str=NAME.substring(0 until index)
println(str)
println(str2)
  • 分割字符串并返回数组split

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

val data=NAMES.split(",")
println(data?.get(0))
println(data?.get(1))
println(data?.get(2))
val(origin,dest,proxy)=NAMES.split(",")  //解构语法
println("$origin $dest $proxy")

字符缓替换 replace 配合when 表达式 来处理字符串的替换

val str1 ="The people's Republic of china."
val str3= str1.replace(Regex("[aeiou]")){
    when (it.value){
        "a" -> "8"
        "e" -> "6"
        "i" -> "9"
        "o" -> "1"
        "u" -> "3"
        else -> it.value
    }

}
println(str1)
println(str3)
  • 字符串比较 kotlin 版本

fun main() {

    //字符串比较
    //>在Kotlin中,用==检查两个字符串中的字符是否匹配,
    // 用===检查两个变量是否指向内存堆上同一对象,
    // 布在Java中==做引用比较,结构比较时用equals方法。
    val str1="Jason"
    val str2="Jason"
    println(str1==str2)
    println(str1===str2)

}

image.png 通过打印日志我们发现在kotlin 里面我们使用==比较的时候 是比较字符串的内容,如果内容相同那么就相等 === 比较的是两个变量是否指向内存堆上面的同一个对象 当字符串没有被重新赋值的时候 是相等 如果重新赋值开辟了新的内存地址 就返回了false

  • 字符串比较Java版本

import kotlin.jvm.internal.Intrinsics;

public class StringtestJava {

    public static void main(String[] args) {


        String str1 = "Jason";
        String str2 = "jason";
        str2=str2.replaceFirst("jason","Jason");
        System.out.println("str2-- > "+str2);
        boolean var2 = Intrinsics.areEqual(str1, str2);
        System.out.println(var2);
        var2 = str1 == str2;
        System.out.println(var2);


    }
}

修改后版本

import kotlin.jvm.internal.Intrinsics;

public class StringtestJava {

    public static void main(String[] args) {


        String str1 = "Jason";
        String str2 = "jason";
        str2=str2.replaceFirst("jason","Jason");
        System.out.println(str1.equals(str2));
        System.out.println(str1==str2);
//        System.out.println("str2-- > "+str2);
//        boolean var2 = Intrinsics.areEqual(str1, str2);
//        System.out.println(var2);
//        var2 = str1 == str2;
//        System.out.println(var2);


    }
}

image.png

通过我们的观察在java里面我们使用的是equals 来比较字符串的内容 通过== 来比较两个字符串的变量是否指向内存堆上面同一个对象