Проверьте, содержит ли строка только буквы - PullRequest
0 голосов
/ 20 апреля 2020

Как создать функцию, которая принимает строку и возвращает результат, независимо от того, содержит ли строка только буквы алфавита.

Ответы [ 4 ]

3 голосов
/ 20 апреля 2020

Вы можете использовать функцию firstOrNull() для поиска 1-го буквенного символа и сравнить результат с null:

fun onlyLetters(s: String): Boolean = (s.firstOrNull { !it.isLetter() } == null)

или в качестве функции расширения:

fun String.onlyLetters(): Boolean = (firstOrNull { !it.isLetter() } == null)

Обратите внимание, что таким образом вы получите true, даже если строка пуста. Если вы не хотите этого, вы должны добавить еще одно условие для длины, например:

fun String.onlyLetters(): Boolean = length > 0 && (firstOrNull { !it.isLetter() } == null) 
2 голосов
/ 20 апреля 2020

функция all возвращает true, если все символы соответствуют данному предикату.

fun String.onlyLetters() = all { it.isLetter() }

if (str.onlyLetters()) {
// only letters
}
else {

}

0 голосов
/ 20 апреля 2020

Вы можете использовать простое регулярное выражение для проверки ввода:

fun isOnlyLetters(word: String): Boolean {
val regex = "^[A-Za-z]*$".toRegex()
return regex.matches(word)}

В качестве альтернативы,

  • делает регулярное выражение ^[A-Za-z ]*$ (пробел после "z") позволит любое количество пробелов (например, в фразе) в любой точке строки (т. е. и по-прежнему возвращающих значение true).
  • , делающих регулярное выражение ^[A-Za-z ]+$ (* -> +) вернет false для пустой строки (т.е. убедитесь, что на входе есть хотя бы один символ, будь то буква или пробел).
0 голосов
/ 20 апреля 2020

создать функцию расширения isLettersOnly ()

/ * * Эта функция возвращает true, только если строка содержит az или AZ, * В противном случае false * /

fun String.isLettersOnly(): Boolean {
    val len = this.length
    for (i in 0 until len) {
        if (!this[i].isLetter()) {
            return false
        }
    }
    return true
}

1.проверьте строковое значение

fun main() {
    val text = "name"

    if (text.isLettersOnly()) {
        println("This is contain a-z,A-Z only")
    } else {
        println("This contain something else")

    }
}

output: это содержит только az, AZ

2.проверить строковое значение

fun main() {
    val text = "name 5"

    if (text.isLettersOnly()) {
        println("This is contain a-z,A-Z only")
    } else {
        println("This contain something else")

    }
}

output: это содержит что-то еще

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...