kotlin中如何更改字符串中的字符

Yus*_*eff 2 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)
    
}
Run Code Online (Sandbox Code Playgroud)

但这会产生错误:

jdoodle.kt:20:16: error: no set method providing array access
            str[i] = 'B'
Run Code Online (Sandbox Code Playgroud)

但下面的代码工作正常:

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)
    
}
Run Code Online (Sandbox Code Playgroud)

我只想将字符串中的所有 ..... 更改为 B。

就像“H...H”到“HBBBH”

为什么第一个代码不起作用?

Tod*_*odd 6

第一个示例不起作用,因为Stringkotlin 中的 s 是不可变的,您无法更改字符。相反,您必须创建一个新的String,就像您的第二个示例一样(实际上,它String为每次循环创建一个新的)。

Kotlinreplace为您提供了一个函数:

fun main() {
    val input = "H...H"
    val output = input.replace('.', 'B')
    println(output)  // Prints "HBBBH"
}
Run Code Online (Sandbox Code Playgroud)