首页 > 解决方案 > 如何在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”

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

标签: kotlin

解决方案


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

Kotlinreplace为您提供了一个功能:

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

推荐阅读