相关文章推荐
飘逸的马克杯  ·  arcgis for ...·  1 年前    · 
任性的菠菜  ·  Android下json-c库使用 - ...·  1 年前    · 
另类的牙膏  ·  Elasticsearch:使用 ...·  1 年前    · 
Kotlin入门(5)字符串及其格式化

Kotlin入门(5)字符串及其格式化

上一篇文章介绍了数组的声明和操作,包括字符串数组的用法。注意到Kotlin的字符串类也叫String,那么String在Java和Kotlin中的用法有哪些差异呢?这便是本文所要阐述的内容了。


首先要说明的是String类型与基本变量类型之间的转换方式,在《Kotlin入门(3)基本变量类型的用法》中,提到基本变量类型可以通过toString方法转为字符串类型。反过来,字符串类型又该如何转为基本变量类型?如果使用Java编码,有以下几种转换方式:

字符串转整型:调用方法Integer.parseInt(***)

字符串转长整型:调用方法Long.parseLong(***)

字符串转浮点数:调用方法Float.parseFloat(***)

字符串转双精度数:调用方法Double.parseDouble(***)

字符串转布尔型:调用方法Boolean.parseBoolean(***)

字符串转字符数组:调用String对象的toCharArray方法

就上面的转换情况来看,Java的实现方式比较繁琐,既需要其它类型的类名,有需要其它类型的转换方法。而在Kotlin这边,转换类型相对简单,并且与基本变量类型之间的转换保持一致,具体说明如下:

字符串转整型:调用String对象的toInt方法

字符串转长整型:调用String对象的toLong方法

字符串转浮点数:调用String对象的toFloat方法

字符串转双精度数:调用String对象的toDouble方法

字符串转布尔型:调用String对象的toBoolean方法

字符串转字符数组:调用String对象的toCharArray方法

显而易见,Kotlin对字符串的类型转换更友好,也更方便记忆。


当然,转换类型只是字符串的基本用法,还有更多处理字符串的其他用法,比如查找子串、替换子串、截取指定位置的子串、按特定字符分隔子串等等,在这方面Kotlin基本兼容Java的相关方法。对于查找子串的操作,二者都调用indexOf方法;对于截取指定位置子串的操作,二者都调用substring方法;对于替换子串的操作,二者都调用replace方法;对于按特定字符分隔子串的操作,二者都调用split方法。

下面是Kotlin使用indexOf和substring方法的代码例子:

    val origin:String = tv_origin.text.toString()
    var origin_trim:String = origin
    if (origin_trim.indexOf('.') > 0) {
        origin_trim = origin_trim.substring(0, origin_trim.indexOf('.'))
    }

在这些字符串处理方法里面,唯一的区别是split方法的返回值,在Java中,split方法返回的是String数组,即String[];但在Kotlin中,split方法返回的是String队列,即List<String>。下面是Kotlin使用split方法的示例代码:

    btn_split.setOnClickListener {
        var strList:List<String> = origin.split(".")
        var strResult:String = ""