如何在Kotlin中反转字符串的大小写?

时间:2018-07-08 12:08:01

标签: kotlin

反转字符串大小写的最有效方法是什么?

input = "Hello World"
output = "hELLO wORLD"

此处大写字符将转换为小写,反之亦然。

有默认的库支持吗?

4 个答案:

答案 0 :(得分:1)

字符串扩展功能可反转字符串的大小写:

方法1:使用CharArray

fun String.reverseCaseOfString(): String {
    val inputCharArr = toCharArray() // Converting the input to char array
    var output = ""
    for (i in 0 until inputCharArr.size) {
        output += if (inputCharArr[i].isUpperCase()) { // Checking the character is in uppercase or not
            inputCharArr[i].toLowerCase() // Converting the char to lower case
        } else {
            inputCharArr[i].toUpperCase() // Converting the char to upper case
        }
    }
    return output
}

方法2:使用CharIterator

private fun String.reverseCaseOfString(): String {
    val charIterator = iterator() // CharIterator of string
    var output = ""
    for (char in charIterator) {
        output += if (char.isUpperCase()) { // Checking the character is in uppercase or not
            char.toLowerCase() // Converting the char to lower case
        } else {
            char.toUpperCase() // Converting the char to upper case
        }
    }
    return output
}

然后您可以通过以下代码使用此扩展功能:

fun main(args: Array<String>) {
    print("Hello World".reverseCaseOfString())
}

输出:hELLO wORLD

到目前为止,默认库支持不可用以反转字符串的大小写。

答案 1 :(得分:1)

在科特林,我会提出这样的建议:

<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
    'Me.ServiceName = "Bar"
End Sub

将String中的每个Char转换为相反的字符,然后无限制地加入String。

可用于以下用途:

fun String.reverseCase(): String = map { if (it.isUpperCase()) it.toLowerCase() else it.toUpperCase() }.joinToString("")

答案 2 :(得分:1)

这是我的尝试,目的是使代码易于阅读,而且性能出色。

fun String.invertCase(): String {
    val array = this.toCharArray()
    this.forEachIndexed { index, char ->
        when {
            char.isUpperCase() -> array[index] = char.toLowerCase()
            char.isLowerCase() -> array[index] = char.toUpperCase()
        }
    }
    return String(array)
}

val input = "Hello World"
println(input.invertCase()) // hELLO wORLD

答案 3 :(得分:0)

对我来说,一种优雅的方式是:

  1. 为Char创建扩展功能:

    fun Char.reverseCase(): Char = if (isUpperCase()) toLowerCase() else toUpperCase()

  2. ,然后用它创建String的扩展名:

    fun String.reverseCase(): String = toCharArray().map { it.reverseCase() }.joinToString("")