侧边栏壁纸
博主头像
Z同学博主等级

工作磨平激情前,坚持技术的热忱。 欢迎光临Z同学的技术小站。 分享最新的互联网知识。

  • 累计撰写 290 篇文章
  • 累计创建 57 个标签
  • 累计收到 98 条评论

Kotlin 基础-String类型了解字符串的两种转换,和拼接逻辑

Z同学
2022-01-01 / 2 评论 / 1 点赞 / 2,087 阅读 / 2,402 字
温馨提示:
本文最后更新于 2022-01-06,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1.前言

本篇文章详细介绍Kotlin中的String 类型,学会如何进行字符串的拼接,查找,比较和截取。

让我们能够通过一篇文章,了解Kotlin中的String对象的各种使用。

2.介绍

在Kotlin中,通过""双引号和"""三引号来定义String。对于Kotlin来说String 其实就是bytes的数组。我们看到的是String。其实对于Kotlin来说这是一个数组对象。我们把握了这个思路后面的各种方法就能更直观的理解。

在Kotlin中String 是不可变字符串,和Java中的String 是一样的概念。也就是每一个String 都会创建一个对象,如果进行String拼接的时候,就会创建多个String对象了。Kotlin中也有可变字符串StringBuilder。在这里先不介绍StringBuilder对象了。后面有机会再介绍。

2.1 字符串创建

fun main(args: Array<String>) {
    var str: String = "这是字"
    for (c in str) {
        println(c)
    }
}
//输出
这
是
字

我们如果使用三引号创建的就是字符行了

var str1 ="""
    白日依山尽
    黄河入海流
"""
println(str1)
//输出
    白日依山尽
    黄河入海流

在多行字符串中,各种转义字符是不支持的。

在上面的例子中字符行前面会有空行。如果我们想进行删除空行。可以采用"|"配合trimMargin()函数处理。

实例:

var str1 ="""
    |白日依山尽
    |黄河入海流
""".trimMargin()
println(str1)

这样输出的就没有了开头的空行了。

3. byteArray 与 CharArray 转换 String

在Kotlin中有提供顶级函数,可以直接进行String 的转换。

3.1 byteArray 转String

字节数组转换成字符串函数:该函数是Kotlin自带的系统api我们可以直接使用。

fun String(bytes : ByteArray, offset: Int,length :Int, charset :Charset):String

其中的参数介绍如下所示:

  • bytes:要转换的字节数组
  • offset:字节数组下标开始的位置(从指定下标开始获取,并转换。默认为0开始,可以省略)
  • length:转换的字节的长度(打算从字节数组提取的数量,默认为整个字节数组的长度,默认可以省略)
  • charset:字符编码。(utf-8,gbk等字符编码。默认可以省略)

示例:

fun main(args:Array<String>){
    val bytes = byteArrayOf(97,98,99) // a,b,c 的字节数
    val n1 = String(bytes)
    println(n1) //输出abc
    val n2 = String(bytes,1,2)
    println(n2) //输出 bc
}

上面的示例中,我们如果没有填写字符编码,就会按照系统默认的字符集进行处理了。

3.2 CharArray 转String

字符数组转字符串函数:该函数是Kotlin自带的系统api我们可以直接使用。

fun String(chars : CharsArray, offset: Int,length :Int):String

参数详细介绍:

  • chars:要转换的字符数组对象
  • offset:要转换的字符数组的开始位置下标(默认从0开始)
  • length:转换的字符的长度(也就是字符数组中我们要取的长度,默认是整个字符数组的长度)

char相较于byte 没有了编码的转换。

示例:

fun main(args:Array<String>){
    val chars = charArrayOf('a','b','c','d') 
    val n1 = String(chars)
    println(n1) //输出abcd
    val n2 = String(chars,1,2)
    println(n2) //输出 bc
}

两种转换的介绍,到这里就是结束了。

4. 字符串拼接

我们在开始介绍过Stirng 是一个不可变字符串。每次拼接的时候都会创建一个新的String对象。数据比较多的情况下,不太建议直接String拼接。但是在比较少的情况下,也可以灵活使用。

相较于java的String对象,Kotlin中String 支持直接使用+或者+=进行String 对象的拼接。

示例:

fun main(args:Array<String>){
    val chars ="zin" 
   	chars +="yan"
    chars +=".com"
    println(chars) //输出 zinyan.com
    
    val v1 ="zin"
    val v2 ="yan"
    val s1 = v1+v2
    println(s1) //输出 zinyan
}

除了这种直接的拼接以外,还支持混合对象的拼接。

示例:

fun main(args:Array<String>){
    val v1 =2022
    val v2 ="新年快乐 "+v1
    println(v2) //输出 新年快乐 2022
    
    val s1 = 'A'
    val s2 ="Z同学的等级是"+s1
    println(s2) //输出 Z同学的等级是A
}

我上面的示例只是一些基本属性。除此以外还支持更多包括我们自定义的属性进行拼接。

当我们进行拼接的时候,Kotlin其实会自动调用其他对象的toString方法获取该对象的String值。然后进行拼接成新的String。

关于字符串的基本就介绍到这里吧。下篇介绍 字符串的查找和比较吧

1

评论区