Ein Memorandum bei der Beurteilung der Ganzzahl / des Bruchs einer Zeichenfolge in Java
Ich möchte eine Zeichenfolge, die nur aus Zahlen und Dezimalstellen besteht, als positiv behandeln. (Ohne Indexnotation usw.)
Bei der Double.parsedouble (str) -Methode werden die Exponentialnotationen `2.4e + 8```,`
NaN und `` Infinity
analysiert. Verwenden Sie daher einen regulären Ausdruck. Ich habe ein Urteil gefällt.
jdk1.8.0_40
^-?(0|[1-9]\d*)(\.\d+|)$
Testcode
List<String> targets = Arrays.asList("0","-0","0.8","0.878","1","-1","1.1",
"1.123","544","42.195","000","000.0","2.4e+8","3.1e-2","-6.75e-7",
"0X02.Bp-1","1.","155.","000.0","-0.","-0000.","0x07","A","1",
"-","NaN","Infinity","-Infinity");
String regex = "^-?(0|[1-9]\\d*)(\\.\\d+|)$";
Pattern p = Pattern.compile(regex);
for(String s : targets){
Matcher matcher = p.matcher(s);
if(matcher.matches())
System.out.println("match! : " + s);
else
System.out.println("Unzutreffend: " + s);
}
Das Testziel ist geeignet.
result
match! : 0
match! : -0
match! : 0.8
match! : 0.878
match! : 1
match! : -1
match! : 1.1
match! : 1.123
match! : 544
match! : 42.195
Unzutreffend: 000
Unzutreffend: 000.0
Unzutreffend: 2.4e+8
Unzutreffend: 3.1e-2
Unzutreffend: -6.75e-7
Unzutreffend: 0X02.Bp-1
Unzutreffend: 1.
Unzutreffend: 155.
Unzutreffend: 000.0
Unzutreffend: -0.
Unzutreffend: -0000.
Unzutreffend: 0x07
Unzutreffend: A
Unzutreffend: 1
Unzutreffend: -
Unzutreffend: NaN
Unzutreffend: Infinity
Unzutreffend: -Infinity
Recommended Posts