Kotlin中的字符串基本操作

news2025/3/13 10:41:47
  1. 字符串定义:
 val str: String = "Hello World"
 val str1 = "Hello World"
  1. 获取字符串的长度:
 println(str.length)
  1. 通过索引方式访问某个字符,索引从0开始:

    println(str[4])
    
  2. 通过for循环迭代字符串:

    for (char in str) {
        print(char)
    }
    println()
    
  3. 字符串查找:

    println(str.first())               // 获取第1个元素
    println(str.last())                // 获取最后1个元素
    println(str.get(4))                // 获取第5个元素
    println(str[4])                    // 获取第5个元素
    println(str.indexOf('o'))          // 查找字符串在原字符串中第1次出现的索引
    println(str.lastIndexOf('o'))      // 查找字符串在原字符串中最后1次出现的索引
    
  4. 字符串截取:
    在这里插入图片描述

    println(str.substring(3))                   // 截取索引为3到结尾的字符
    println(str.substring(3, 7))                // 截取索引为3到索引为6的字符
    println(str.substring(IntRange(3, 7)))      // 截取索引为3到索引为7的字符
    println(str.subSequence(3, 7))              // 截取索引为3到索引为6的字符
    println(str.subSequence(IntRange(3, 7)))    // 截取索引为3到索引为7的字符
    
  5. 字符串替换:
    在这里插入图片描述

    val strReplace = "Hello World! Hello World!"
    println(strReplace.replace("World", "Kotlin")) // Hello Kotlin! Hello Kotlin!
    println(strReplace.replaceFirst("World", "Kotlin")) // Hello Kotlin! Hello World!
    println(strReplace.replaceBefore("!", "Kotlin")) // Kotlin! Hello World!
    println(strReplace.replaceAfter("Hello ", "Kotlin!")) // Hello Kotlin!
    
  6. 字符串分割:

    val strSplit = "hello.kotlin"
    val split = strSplit.split(".")
    println(split) //[hello, kotlin]
    
    val strSplit2 = "hello.kotlin/world"
    val split2 = strSplit2.split(".", "/")
    println(split2) //[hello, kotlin, world]
    
  7. 字符串去空格:

    val strTrim = "         Hello World!         "
    println(strTrim.trim())
    println(strTrim.trimEnd())
    
  8. 字符串中包含转义字符:

    val str3 = " 您\n好"
    println(str3)
    
  9. 原始字符串:

    val str4 = """您\n好"""
    println(str4)
    
  10. 模板表达式:

    val a = 1
    val s1 = "a is $a" // 语法格式${变量}
    val s2 = "a is $a" // 可以省略大括号
    println(s1)
    println(s2)
    
  11. 模板表达式调用方法:

    println("${helloWorld()}") // Hello World
    println("${s2.replace("is", "was")}")
    
fun helloWorld(): String {
    return "Hello World"
}

14.输出$
在原生字符串中,使用模板表达式输出 需要使用 需要使用 需要使用{‘$’}

val price = """${'$'}8.88"""
    println(price)

以上是 Kotlin 中字符串的一些基本操作示例,展示了字符串长度、索引访问、迭代、查找、截取、替换、分割、去空格、转义字符、原始字符串以及模板表达式等常见用法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1104065.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python-Python高阶技巧:闭包、装饰器、设计模式、多线程、网络编程、正则表达式、递归

版本说明 当前版本号[20231018]。 版本修改说明20231018初版 目录 文章目录 版本说明目录Python高阶技巧闭包简单闭包修改外部函数变量的值实现以下atm取钱的闭包实现了闭包注意事项 装饰器装饰器的一般写法(闭包写法)装饰器的语法糖写法 设计模式单例…

微信小程序中如何使用fontawesome6的免费图标

一、官网下载fontawesome6 Download Font Awesome Free or Pro | Font Awesome 二、使用transfer编码成Base64 transfer打开官网:Online font-face generator — Transfonter 首先先把刚刚下载的fontawesome6解压,将文件夹中的字体上传(点…

发电机组负载测试的必要性

发电机组负载测试是确保发电机组能够在实际运行中稳定工作的重要步骤,负载测试可以模拟发电机组在不同负载条件下的工作情况,评估其性能和稳定性。负载测试可以验证发电机组在不同负载条件下的性能表现,通过模拟实际使用情况评估发电机组的输…

【Flutter】第一篇基础:站在一名web前端开发者的角度看代框架

Flutter Flutter 是一个跨平台的 UI 工具集,它的设计初衷,就是允许在各种操作系统上复用同样的代码,例如 iOS 和 Android,同时让应用程序可以直接与底层平台服务进行交互。如此设计是为了让开发者能够在不同的平台上,…

怎么把m4v转换为mp4?

怎么把m4v转换为mp4?M4V是一种由苹果公司开发的视频文件格式,该格式可以在苹果公司的iTunes和QuickTime软件中播放。M4V格式本质上与MP4格式相似,但M4V通常包括了用于数字版权管理(DRM)的保护措施,以控制该…

【笔记-OrCAD】WARNING(ORCAP-36038)解决办法

问题描述: OrCAD16.6绘制好原理图后,点击“*.dsn”文件可以生成网表,在存放原理图的文件内找到allegro文件夹,用记事本打开netlist.log文件,可以看到具体的警告原因,例如: WARNING(ORCAP-36038)…

优雅而高效的JavaScript—— Class 和模块化

😊博主:小猫娃来啦 😊文章核心:优雅而高效的JavaScript—— Class 和模块化 文章目录 引言Class 的概念和用法Class 的定义Class 的继承Class 的静态方法和属性 模块化的概念和用法模块的导出和导入模块的默认导出和命名导出模块的…

SpringCloud: sentinel链路限流

一、配置文件要增加 spring.cloud.sentinel.webContextUnify: false二、在要限流的业务方法上使用SentinelResource注解 package cn.edu.tju.service;import com.alibaba.csp.sentinel.annotation.SentinelResource; import com.alibaba.csp.sentinel.slots.block.BlockExcept…

CVPR、ICCV、ECCV论文获取

CVPR每年召开,ICCV两年一次 链接地址 ECCV两年一开 链接地址

10. 机器学习-评测指标

Hi,你好。我是茶桁。 之前的课程中,我们学习了两个最重要的回归方法,一个线性回归,一个逻辑回归。也讲解了为什么学习机器学习要从逻辑回归和线性回归讲起。因为我们在解决问题的时候,有限选择简单的假设,越复杂的模型…

十七、文件(1)

本章概要 文件和目录路径 选取路径部分片段路径分析Paths 的增减修改 目录 在丑陋的 Java I/O 编程方式诞生多年以后,Java终于简化了文件读写的基本操作。 打开并读取文件对于大多数编程语言来说是非常常用的,由于 I/O 糟糕的设计以至于很少有人能够在不…

第七章 排序

第七章 排序 概述插入排序交换排序冒泡排序快速排序 选择排序直接选择排序堆排序 归并排序有序序列合并二路归并排序 小试牛刀 概述 排序就是将一组对象按照规定的次序(升序或降序等)重新排列的过程,往往为检索服务相同键值的两个记录在排序…

索引背后的数据结构——B+树

为什么要使用B树? 可以进行数据查询的数据结构有二叉搜索树、哈希表等。对于前者来说,树的高度越高,进行查询比较的时候访问磁盘的次数就越多。而后者只有在数据等于key值的时候才能进行查询,不能进行模糊匹配。所以出现了B树来解…

SQL数据库管理工具RazorSQL mac中文版特点与功能

RazorSQL mac是一款功能强大的SQL数据库管理工具,它支持多种数据库,包括MySQL、Oracle、Microsoft SQL Server、SQLite、PostgreSQL等。 RazorSQL mac 软件特点和功能 多种数据库支持:RazorSQL支持多种数据库,用户可以通过一个工…

故障预测与健康管理(PHM)在工业领域的发展前景

故障预测与健康管理(PHM)作为一种关键技术,已经在工业领域引起了广泛的关注和应用。PHM利用传感器、数据科学和智能算法等技术手段,通过实时监测和分析设备和系统的状态,提前发现潜在故障,并采取适当的维修…

制作linux系统内部yum源仓库

需求说明 制作内网linux系统yum源仓库,比较简单的方式就是添加系统镜像,此种yum配置方式可参考文章 https://blog.csdn.net/d1240673769/article/details/108477661 如果无法提供系统镜像,那该如何创建内网的yum源仓库呢?本文提…

互联网Java工程师面试题·Java 总结篇·第六弹

目录 56、TreeMap 和 TreeSet 在排序时如何比较元素?Collections 工具类中的 sort()方法如何比较元素? 57、Thread 类的 sleep()方法和对象的 wait()方法都可以让线程暂停执行,它们有什么区别? 58、线程的 sleep()方法和 yield()方法有什…

在nodejs中实现双重身份验证机制

在nodejs中实现双重身份验证机制 双重身份验证(Two-factor authentication)是一种安全机制,它要求用户提供两种不同的身份验证因素来访问他们的帐户:密码和发送到他们的移动设备的验证码。在本文中,我们将一步步通过使用speakeasy在nodejs中实…

deforum + kandinsky = 视频工作流

像搭积木一样玩AI,随着模型种类的不断丰富,不同的组合会带来什么惊喜?今天和大家分享最近看到的一个视频工作流(工具箱)。 首先,我们先对deforum和kandinsky做一些基本的介绍: deforum-art/defo…

【论文解读】单目3D目标检测 CUPNet(ICCV 2021)

本文分享单目3D目标检测,CUPNet 模型的论文解读,了解它的设计思路,论文核心观点,模型结构,以及效果和性能。 目录 一、CUPNet简介 二、论文核心观点 三、模型框架 四、损失函数 五、核心观点——3D高度估计误差 引…