前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kotlin基础--字符串操作、数字类型、标准库函数

kotlin基础--字符串操作、数字类型、标准库函数

作者头像
aruba
发布2021-12-06 17:17:56
4200
发布2021-12-06 17:17:56
举报
文章被收录于专栏:android技术
上次我们学习了kotlin的null安全、异常、先决条件,接下来来看看kotlin的字符串操作、数字类型、标准库函数
一、字符串操作
1.字符串截取

substring函数支持IntRange类型参数,使用until创建的范围遵循左闭右开

代码语言:javascript
复制
const val title = "my day's study"

fun main() {
    //'的索引
    val endIndex = title.indexOf('\'')
    
    var str = title.substring(0, endIndex)
    println(str)

    str = title.substring(0 until endIndex)
    println(str)
}

结果:

my day

my day

2.split函数

split函数返回的是一个List对象,List支持解构语法特性:允许在一个表达式中给多个变量赋值

代码语言:javascript
复制
const val names = "张三,李四,王五"

fun main() {
    val nameList = names.split(',')

    val (one, two) = nameList
    
    println(one)
    println(two)
}

结果:

张三

李四

3.replace函数

替换字符串,支持正则表达式。第一个参数为正则表达式,第二个为匿名函数

代码语言:javascript
复制
const val bookName = "Introduction to algorithms"

fun main() {
    val encode = bookName.replace(Regex("[a-g]")) {
        when (it.value) {
            "a" -> "9"
            "c" -> "4"
            "d" -> "3"
            "g" -> "6"
            else -> it.value
        }
    }
    
    println(encode)
}

结果:

Intro3u4tion to 9l6orithms

4.字符串比较

和Java不同,kotlin中的"=="相当于Java中的"equals","==="相当于Java中的"=="

代码语言:javascript
复制
fun main(){
    val a = "hello"
    var b = "hello "
    b = b.substring(0 until b.length -1)
    
    if(a == b)
        println("内容一样")
    else
        print("内容不一样")
    
    if(a === b)
        println("内存地址一样")
    else
        print("内存地址不一样")
}

结果:

内容一样

内存地址不一样

注:为什么要用substring函数,因为kotlin在编译时会自动把一样的字符串的变量指向同一片内存

5.遍历字符串

forEach函数

代码语言:javascript
复制
const val bookName = "Introduction to algorithms"

fun main() {
    bookName.forEach {
        print("$it/")
    }
}

结果:

I/n/t/r/o/d/u/c/t/i/o/n/ /t/o/ /a/l/g/o/r/i/t/h/m/s/

二.数字类型

和Java一样:

1.安全转换函数

kotlin提供了toIntOrNull这样的函数,如果不能转换,不抛出异常,而是返回null

代码语言:javascript
复制
fun main() {
    val num: Int? = "8.56".toIntOrNull()
    println(num)
}
2.Double转Int
代码语言:javascript
复制
fun main() {
    //去掉小数
    var num = 8.56.toInt()
    println(num)
    
    //四舍五入
    num = 8.56.roundToInt()
    println(num)
}

结果:

8

9

3.格式化字符串

用习惯c/c++的sprintf的比较熟悉

代码语言:javascript
复制
fun main() {
    val str = "%.2f".format(5.23578)
    println(str)
}

结果:

5.24

三.标准库函数

kotlin提供的标准库函数,又进一步的提升了编写代码效率,掌握它们是使用kotlin的前提

1.apply

apply函数可以看作一个配置函数,它的作用域内可以直接使用接收者的函数,并在最后自动返回接收者

代码语言:javascript
复制
fun main() {
    //不使用apply
    var file = File("D:\\my book.txt")
    file.setReadable(true)
    
    var file2 = File("D:\\my book.txt").apply {
        //作用域内直接可以调用接收者函数
        setReadable(true)
    }
}
2.run

run函数和apply类似,只不过最后返回的是匿名函数结果,另外标准库函数都可以执行函数引用,非常方便

代码语言:javascript
复制
fun main() {
    File("D:\\my book.txt").run {
        //将文件内容全部读出来,最大2G
        readText()
    }.run(::println)//执行具名函数
}

结果(我txt里的内容):

this is my book

3.with

和run一样,只不过调用方式不同,把接收者作为参数传递了,一般用的不多

代码语言:javascript
复制
fun main() {
    with(File("D:\\my book.txt")) {
        //将文件内容全部读出来,最大2G
        readText()
    }.run(::println)//执行具名函数
}
4.also

和apply不同的是,also函数会把接收者作为一个参数传递给匿名函数,所以我们在匿名函数作用域里,不能直接使用接收者的函数了,要使用it来调用

also函数返回的是接收者

代码语言:javascript
复制
fun main() {
    var content: String
    var file: File = File("D:\\my book.txt").also {
        content = it.readText()
    }

    println(content)
}
5.let

let和also类似,不过返回的是lambda结果

代码语言:javascript
复制
fun main() {
    var content: String = File("D:\\my book.txt").let {
        it.readText()
    }

    println(content)
}
总结下它们的区别:

函数

作用域

返回值

let

it

lambda结果

aslo

it

接收者

run

接收者

lambda结果

apply

接收者

接收者

6.takeIf

takeif需要判断lambda中的结果是true还是false,如果是false返回null,为true,返回接收者,相比于if,它可以直接在对象上调用,避免了临时变量赋值的麻烦

代码语言:javascript
复制
fun main() {
    File("D:\\my book.txt").takeIf { it.canRead() }
        ?.run { readText() }
        .run(::println)
}
7.takeUnless

和takeIf相反,表达式结果为true,则返回null,否则返回接收者对象,一般使用takeIf就可以了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/9/15 上,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 上次我们学习了kotlin的null安全、异常、先决条件,接下来来看看kotlin的字符串操作、数字类型、标准库函数
  • 一、字符串操作
    • 1.字符串截取
      • 2.split函数
        • 3.replace函数
          • 4.字符串比较
            • 5.遍历字符串
            • 二.数字类型
              • 1.安全转换函数
                • 2.Double转Int
                  • 3.格式化字符串
                  • 三.标准库函数
                    • 1.apply
                      • 2.run
                        • 3.with
                          • 4.also
                            • 5.let
                              • 总结下它们的区别:
                                • 6.takeIf
                                  • 7.takeUnless
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档