如果我的String
看起来像这样:String calc = "5+3"
。我可以对integers
5
和3
在这种情况下,你知道String的外观,但它看起来像这样:String calc = "55-23"
因此,我想知道是否有一种方法来识别字符串中的整数。
答案 0 :(得分:2)
对于类似的东西,正则表达式是你的朋友:
String text = "String calc = 55-23";
Matcher m = Pattern.compile("\\d+").matcher(text);
while (m.find())
System.out.println(m.group());
输出
55
23
现在,您可能需要将其展开以支持小数:
String text = "String calc = 1.1 + 22 * 333 / (4444 - 55555)";
Matcher m = Pattern.compile("\\d+(?:.\\d+)?").matcher(text);
while (m.find())
System.out.println(m.group());
输出
1.1
22
333
4444
55555
答案 1 :(得分:1)
您可以阅读每个字符并找到它的Ascii代码。如果它在48到57之间,则评估它的代码,它是一个数字,如果不是,则它是一个符号。 如果您发现另一个字符也是数字,您必须添加到上一个数字,直到您到达符号。
String calc="55-23";
String intString="";
char tempChar;
for (int i=0;i<calc.length();i++){
tempChar=calc.charAt(i);
int ascii=(int) tempChar;
if (ascii>47 && ascii <58){
intString=intString+tempChar;
}
else {
System.out.println(intString);
intString="";
}
}
答案 2 :(得分:1)
您可以使用([\d]+)([+-])([\d]+)
之类的正则表达式来获取完整的二进制表达式。
Pattern pattern = Pattern.compile("([\\d]+)([+-])([\\d]+)");
String calc = "5+3";
Matcher matcher = pattern.matcher(calc);
if (matcher.matches()) {
int lhs = Integer.parseInt(matcher.group(1));
int rhs = Integer.parseInt(matcher.group(3));
char operator = matcher.group(2).charAt(0);
System.out.print(lhs + " " + operator + " " + rhs + " = ");
switch (operator) {
case '+': {
System.out.println(lhs + rhs);
}
case '-': {
System.out.println(lhs - rhs);
}
}
}
输出:
5 + 3 = 8