Kotlin,Android 平台。如何检查文本中是否包含数字/符号/字符?

Gri*_*kov 6 android kotlin

首先,我是 Kotlin 新手,并且只使用 Android Studio 两周时间。

我只是想检查 EditText 字段是否包含任何数字/符号/字符。我尝试这样写:

    if (editText!!.text.contains(Int)) {
    textView?.text = "ERROR! EDITTEXT FIELD CONTAINS DIGITS!"
}
Run Code Online (Sandbox Code Playgroud)

但事实并非如此。例如,我如何检查文本是否是数字,或者是否包含符号(如“/?!:;%”)?感谢您的帮助!

Gra*_*lov 12

大写字母:

if (yourString.contains("[A-Z]".toRegex())) {
    //do something
}
Run Code Online (Sandbox Code Playgroud)

小写字母:

if (yourString.contains("[a-z]".toRegex())) {
    //do something
}
Run Code Online (Sandbox Code Playgroud)

数字:

if (yourString.contains("[0-9]".toRegex())) {
    //do something
}
Run Code Online (Sandbox Code Playgroud)

特殊字符:

if (yourString.contains("[!\"#$%&'()*+,-./:;\\\\<=>?@\\[\\]^_`{|}~]".toRegex())) {
    //do something
}
Run Code Online (Sandbox Code Playgroud)

以上所有字符:

if (yourString.contains("[A-Za-z0-9!\"#$%&'()*+,-./:;\\\\<=>?@\\[\\]^_`{|}~]".toRegex())) {
    //do something
}
Run Code Online (Sandbox Code Playgroud)


Mad*_*hat 6

由于您需要检查文本是否仅包含字母,而不是对任何数字/特殊字符使用正则表达式,因此您可以使用带有否定字母的正则表达式[^A-Za-z],这意味着字母以外的任何内容。所以你的逻辑是

if (editText!!.text.contains(Regex("[^A-Za-z]"))) {
    textView?.text = "ERROR! EDITTEXT FIELD CONTAINS DIGITS/SPECIAL CHARS!"
}
Run Code Online (Sandbox Code Playgroud)

请注意,这仅考虑英文字母。


for*_*pas 2

定义一个包含要检查的所有符号和数字的字符串:

val symbols = "0123456789/?!:;%"
Run Code Online (Sandbox Code Playgroud)

然后使用any:

if (editText!!.text.any {it in symbols}) {
    textView?.text = "ERROR! EDITTEXT FIELD CONTAINS DIGITS/INVALID SYMBOLS!"
}
Run Code Online (Sandbox Code Playgroud)