所以我有一個問題,我正在檢查一個字串是否包含字母表中的每個字母。我能夠檢查字串中是否有字母,但我不確定如何檢查所述字串中是否有每個字母。這是代碼
fun isPangram (pangram: Array<String>) : String {
var panString : String
var outcome = ""
for (i in pangram.indices){
panString = pangram[i]
if (panString.matches(".^*[a-z].*".toRegex())){
outcome = outcome.plus('1')
}
else {outcome = outcome.plus('0')}
}
return outcome
}
歡迎任何想法謝謝。
uj5u.com熱心網友回復:
我認為檢查字母范圍的所有成員是否都在每個字串中比使用正則運算式更容易:
fun isPangram(pangram: Array<String>): String =
pangram.joinToString("") { inputString ->
when {
('a'..'z').all { it in inputString.lowercase() } -> "1"
else -> "0"
}
}
uj5u.com熱心網友回復:
嗨,這是使用正則運算式的方法
Kotlin 語法
fun isStrinfContainsAllAlphabeta( input: String) {
return input.lowercase()
.replace("[^a-z]".toRegex(), "")
.replace("(.)(?=.*\\1)".toRegex(), "")
.length == 26;
}
在java中:
public static boolean isStrinfContainsAllAlphabeta(String input) {
return input.toLowerCase()
.replace("[^a-z]", "")
.replace("(.)(?=.*\\1)", "")
.length() == 26;
}
該函式只接受一個字串。第一個“replaceAll”洗掉所有非字母字符,第二個洗掉重復字符,然后檢查剩余的字符數。
uj5u.com熱心網友回復:
只是為了擺脫 Tenfour04 的解決方案,如果您撰寫兩個函式(一個用于 pangram 檢查,一個用于處理陣列),我覺得您可以使其更具可讀性,因為它們實際上是兩個獨立的任務。(這部分是向您展示一些 Kotlin 技巧的借口!)
val String.isPangram get() = ('a'..'z').all { this.contains(it, ignoreCase = true) }
fun checkPangrams(strings: Array<String>) =
strings.joinToString("") { if (it.isPangram) "1" else "0" }
您可以使用擴展函式而不是擴展屬性(so it.isPangram()),或者只使用帶有引數 ( isPangram(it)) 的普通函式,但是如果您愿意,您可以撰寫幾乎讀起來像英語的東西!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/448457.html
