我想检查我从文本字段中获取的字符串是否有逗号,以便删除它并用点请求一个新值。
我尝试使用
textTestAr.trim().matches("^[,]+$")
但什么也没发生,而这
^[1-9,]+$
做的伎俩,但也匹配像1这样的数字。
你不需要在这个问题上强制使用正则表达式。一个简单的textTestAr.indexOf(',')
就可以了。
为什么不在这里使用String#contains而不是正则表达式。
插入符号^
匹配文本的开头。[,]+
匹配任意数量的逗号。您需要的是忽略您要查找的项目之前和之后的所有内容:
^.*[,].*$
点匹配除换行符以外的任何字符。*
是重复(0 - 任何数字)。匹配文本的$
结尾。
请注意,此处不需要修剪字符串。
做就是了
if(textTestAr.contains(",")) System.out.println("It does!");
做就是了textTestAr.contains(",")
第一个断言整个字符串仅由逗号组成。第二个断言字符串由数字(除了0
)和逗号组成,但不需要其中的一个。你可以使用这个:
.*,.*
^...$
请注意,使用时不需要matches
(因为它们是隐式的)。indexOf
但无论如何,像 Marko's 或 yentup's 这样的简单解决方案会更好。
我会直接用正则表达式回答这个问题,
/,/
将一个或一组字母、符号或数字放入其中//
,它会尝试专门匹配它。
不需要正则表达式:
textTestAr.trim().replace(',','.');
public boolean hasComma(String string) {
if ( string.indexOf(",") > -1) {
return true;
}
return false;
}