Android Java中如何检查字符串仅包含数字与空格
解决方法
没问题,这个问题很常见,只需要调整你的正则表达式,把空格加入到合法字符集合里就行了。
你原来的正则[0-9]+只会匹配纯数字字符串,完全没考虑空格,所以带空格的字符串自然会被判定不合法。这里有两种常见的修改思路,根据你的需求选就行:
1. 允许任意位置的空格(包括开头/结尾、连续空格)
如果你的场景里,字符串前后有空格或者连续多个空格也算是合法的,直接把空格加到正则的字符集里:
String Cardresult = edtCashCard.getText().toString(); if (Cardresult.matches("[0-9 ]+")){ Toast.makeText(getApplicationContext(), "Good Job the strings are numbers", Toast.LENGTH_SHORT).show(); } else{ Toast.makeText(getApplicationContext(), "Error the string contains character", Toast.LENGTH_SHORT).show(); }
这里[0-9 ]+表示匹配一个或多个数字或者空格,完全满足你示例字符串的验证需求。
2. 更严格的格式(只允许数字组用单个空格分隔,无开头/结尾空格)
如果想限制格式,比如不能有开头结尾的空格,也不能有连续多个空格(像你示例的6031 3100 3440 0189 000这种规范格式),可以用更精准的正则:
if (Cardresult.matches("^[0-9]+( [0-9]+)*$")){ // 验证通过逻辑 }
这个正则的意思是:
^匹配字符串开头[0-9]+开头必须是一串数字( [0-9]+)*后面可以跟着任意次数(包括0次)的「空格+数字串」组合$匹配字符串结尾
这样就能确保字符串是纯数字组用单个空格分隔的格式,避免无效的空格情况。
如果你还需要允许其他空白字符(比如制表符),可以把空格换成\s,不过看你的需求,用普通空格就足够啦。
内容的提问来源于stack exchange,提问作者Henry
相关产品推荐
相关产品推荐

