kotlin - 如何在kotlin中更改字符串中的字符
问题描述
我正在尝试将字符串中的字符更改为其他字符。
这是我的代码
fun main(args: Array<String>) {
var str: String = "H...H"
for(i in 0..str.length-1) {
if( str[i] == '.')
str[i] = 'B'
}
println(ans)
}
但这会产生错误:
jdoodle.kt:20:16: error: no set method providing array access
str[i] = 'B'
但是以下代码可以正常工作:
fun main(args: Array<String>) {
var str: String = "H...H"
var ans : String = ""
for(i in 0..str.length-1) {
if( str[i] == 'H')
ans += str[i]
else if( str[i] == '.')
ans += 'B'
}
println(ans)
}
我只想将字符串中的所有.....更改为B。
像“H...H”到“HBBBH”
为什么第一个代码不起作用?
解决方案
第一个示例不起作用,因为String
kotlin 中的 s 是不可变的,您无法更改字符。相反,您必须创建一个 new String
,就像您的第二个示例一样(实际上,它String
为每次循环创建一个 new )。
Kotlinreplace
为您提供了一个功能:
fun main() {
val input = "H...H"
val output = input.replace('.', 'B')
println(output) // Prints "HBBBH"
}
推荐阅读
- docker - 通过主机上的 UNC 共享访问 Docker 容器文件系统
- c# - C# XML 结构修复
- javascript - Google App 引擎 Nodejs Puppeteer 中的全局变量
- javascript - 如何将分辨率与仅针对 IE 11 或更高版本的媒体查询相结合?
- sql - 如何将检查约束添加到 postgresql 物化视图?
- android - Flutter Plugin 使用 Kotlin,Activity 总是返回 null
- python - 在 Pandas 数据框中将值从上层聚合连接到下层聚合
- mingw - 使用 gcc 标志 -m32 构建后出现错误 0xc000007b
- javafx - Javafx ComboBox 设置插入符号位置
- firebase - 将集合导出到 BigQuery