我有一个字符串,应该只包含有符号的数字。例如:-100,+ 300,-500,56.9,-98.6等
我一直在尝试在java中找到最有效的方法来验证字符串是否只包含有符号的十进制数。
我为直接问题道歉。
我首先尝试了一个catch块,但是每次有一个数字格式异常时需要一个额外的周期。所以我希望得到一个正则表达式,因为我被告知这些非常有效。
感谢。
答案 0 :(得分:0)
这很简单:
在逗号(和空格)上拆分输入字符串。
然后修剪你得到的每个字符串 (如果您也拆分空格,则不需要这样做。)
检查您获得的每个字符串是否以+或 - 开头 如果是这样,您的所有号码都会被“签名” 否则,您至少有一个'未签名'。
答案 1 :(得分:0)
使用下面的导入,您可以使用正则表达式迭代字符串中的数字。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
下面是如何做到这一点的一个例子。
final String input = "-100,+300,-500,56.9,-98.6";
Pattern pattern = Pattern.compile( "[+-][0-9]+.?[0-9]*" );
Matcher matcher = pattern.matcher( input );
while ( matcher.find() ) {
System.out.println( matcher.group( 0 ) );
}
提出的一个问题是国际化。在某些国家/地区,小数位.
相反,因此 1,000.00 变为 1.000,00 。这可能是您当前分隔符的问题。