Android 鍵盤在輸入輸入字串時不應接受空格、回車、回車等非文本字符。
我嘗試了一些,如下所示 -
這是用于正則運算式。
- \b 是查找單詞邊界。
- 積極向前看 (?=\w) 是為了避免空格。
onChange = { if (it.contains(Regex("(?=\\w)"))) onInput(it) }
但在我的情況下,第一個字符空間不接受,但從第二個字符開始,它正在接受。我是這個正則運算式的新手,任何人都可以幫助我嗎?
對于空間->(?=\w)
忽略的價值,那么價值是什么enter
,return
如果有人知道,請在此處發布您的答案?
更新1:
在 EditText 中,如果我在輸入的第一個字符處輸入非字串字符,則下面的代碼作業正常:
onChange = { if (it.contains(Regex("[0123456789qwertzuiopasdfghjklyxcvbnm]"))) onInput(it) }
但是如果我在第一個位置輸入字串 char 并且從第 2 個字符位置開始接受非文本字符,那么我的問題是如何對輸入字串的所有字符應用相同的條件?
謝謝!
uj5u.com熱心網友回復:
你的問題是it.contains
。如果字串的任何子集包含匹配的正則運算式,這將回傳 true。任何單個字符都將匹配,因此任何至少有 1 個字母的字串都將匹配它。您還需要匹配字串的開頭和結尾,以確保它僅在整個字串中找到有效匹配項。
此外,您更新的示例將失敗任何非英語語言,因為它會匹配重音字母、帶有波浪線的字母、umlats 等。^\w*$
用于匹配占據整個字串的任意數量的字母或數字。
uj5u.com熱心網友回復:
您可以對 Java/Kotlin 中的字串使用 trim() 函式
它將洗掉文本中的所有空格
科特林->
val text = binding.etText.text.toString()
println(text)
println(text.trim())
輸出->
2022-09-15 11:08:49.738 4997-4997/com.ashal.******* I/System.out: Is the te xt for mat ted?
2022-09-15 11:08:49.738 4997-4997/com.ashal.******* I/System.out: Is the text formatted?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/508391.html
標籤:安卓 正则表达式 科特林 android-jetpack-compose
上一篇:需要選擇字串的第一部分并使用REGEXP_SUBSTR消除字符后的其余部分
下一篇:陣列中值的地址不是靜態C#