android 如何在Kotlin中将句子中所有单词的首字母大写

lnxxn5zx  于 2023-05-21  发布在  Android
关注(0)|答案(3)|浏览(270)

这是我/他的房子-输入
这是我/他的房子-输出
在Swift中,有一个大写的方法给出了上面的输出,有没有什么方法可以在Kotlin中实现同样的功能

pxiryf3j

pxiryf3j1#

在Kotlin

val s = "this is my/his house"
println(s.toCapitalizeEachWord())

扩展功能:

fun String.toCapitalizeEachWord() : String{
return this.split(" ").map {
    if(it.contains("/")){
        it.split("/").map { word -> word.replaceFirstChar { firstChar -> firstChar.uppercase() }
        }.joinToString("/")
    }else{
        it.replaceFirstChar { firstChar -> firstChar.uppercase() }
    }
}.joinToString(" ") }

**输入:**这是我/他的房子
**输出:**这是我/他的房子

cyvaqqii

cyvaqqii2#

你得把每个字都大写。
但是String.capitalize()现在已被弃用。
更简单的解决方案是:

fun String.capitalizeSentence(): String =
        this.trim().split("\\s+".toRegex())
            .joinToString(" ") { it.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.ROOT) else it.toString() } }
ippsafx7

ippsafx73#

很多人已经发布了正确的核心逻辑或主要逻辑,所以你只需要添加一点自己的逻辑就可以了。无论如何,下面的方法是测试与您的要求,它是工作正常

fun String.capitalizeEachWord() : String{
    return this.split(" ").map {
        if(it.contains("/")){
            it.split("/").map { word -> word.replaceFirstChar { firstChar -> firstChar.uppercase() }
             }.joinToString("/")
        }else{
            it.replaceFirstChar { firstChar -> firstChar.uppercase() }
        }
    }.joinToString(" ")
}

相关问题