Android Studio Kotlin:如何正确检查字符串中的空格
Android Studio Kotlin: How to properly check spaces in a string
我努力检查的主要内容是字符之间的空格。我想换一个
“”变成“_”但只有当它后面还有另一个字母时......我无法做到。我目前的支票是:
for (c in userName) {
if ("$c" == " ") { //How do I check in here if after c comes another word??
userName = userName.replace("$c", "_")
}
}
像这样的事情怎么样:
for (index in userName.indices) {
val letter = userName[index]
val nextLetter = userName.getOrNull(index + 1)
// if nextLetter == null it means end of the userName
if (nextLetter == null || nextLetter != ' ') {
// Do the replacement
}
}
使用 Kotlin
中提供的 APIs 更容易
我留下了一些评论来阐明每个步骤。
通常,手动操作字符串会比提供的 APIs
更难
实际上,RegEx 的使用将是你最好的朋友,但我想保持这段代码的相关性,而不是用那种方式解决它。
此外,在 Kotlin 中,双引号 "
和单引号 '
之间存在明显区别
双引号是字符串,单引号是字符。 2.
下还有一个不一样的API
我在字符串迭代器方法中使用单引号来保持它更简单和高效,而不是每次都必须创建新的字符串
val myUsername = "super dude 25"
val expectedUsername = "super_dude_25"
val lotsOfSpaces = " super dude 58 "
val expectedSpaces = "super_dude_58"
fun formatUsername(string: String): String {
// Set var to detect duplicate chars
var prevChar = ' '
return string.trim() // Remove surrounding spaces to simplify
.replace(' ', '_') // Spaces into underscores
.filter { char -> // Remove duplicated underscores
if (char == '_' && prevChar == '_') false
else {
prevChar = char
true
}
}
}
val updated = formatUsername(myUsername)
println(updated) // super_dude_25
assert(updated == expectedUsername)
val second = formatUsername(lotsOfSpaces)
println(second)
assert(second == expectedSpaces)
我努力检查的主要内容是字符之间的空格。我想换一个 “”变成“_”但只有当它后面还有另一个字母时......我无法做到。我目前的支票是:
for (c in userName) {
if ("$c" == " ") { //How do I check in here if after c comes another word??
userName = userName.replace("$c", "_")
}
}
像这样的事情怎么样:
for (index in userName.indices) {
val letter = userName[index]
val nextLetter = userName.getOrNull(index + 1)
// if nextLetter == null it means end of the userName
if (nextLetter == null || nextLetter != ' ') {
// Do the replacement
}
}
使用 Kotlin
中提供的 APIs 更容易我留下了一些评论来阐明每个步骤。 通常,手动操作字符串会比提供的 APIs
更难实际上,RegEx 的使用将是你最好的朋友,但我想保持这段代码的相关性,而不是用那种方式解决它。
此外,在 Kotlin 中,双引号 "
和单引号 '
之间存在明显区别
双引号是字符串,单引号是字符。 2.
我在字符串迭代器方法中使用单引号来保持它更简单和高效,而不是每次都必须创建新的字符串
val myUsername = "super dude 25"
val expectedUsername = "super_dude_25"
val lotsOfSpaces = " super dude 58 "
val expectedSpaces = "super_dude_58"
fun formatUsername(string: String): String {
// Set var to detect duplicate chars
var prevChar = ' '
return string.trim() // Remove surrounding spaces to simplify
.replace(' ', '_') // Spaces into underscores
.filter { char -> // Remove duplicated underscores
if (char == '_' && prevChar == '_') false
else {
prevChar = char
true
}
}
}
val updated = formatUsername(myUsername)
println(updated) // super_dude_25
assert(updated == expectedUsername)
val second = formatUsername(lotsOfSpaces)
println(second)
assert(second == expectedSpaces)