给定一个字符串,我想提取数字并在它们之间保持间距。
此过程通常涉及删除所有间距,以便123
变为17/(2 + 3)-13
,这是我避免的。
例如,如果输入为17 2 3 13
我想要 public static void partition(){
String word = "123 -asdfqwerty- 45";
String kajigger = "";
for(int i = 0; i < word.length(); i++){
char c = word.charAt(i);
if(Character.isDigit(c)){
int j = i;
while(Character.isDigit(word.charAt(j))){
kajigger += word.charAt(j);
j++;
}
}
}
System.out.println(kajigger);
}
。
我也有方法可以提取它们之间的运算符和括号,但我不能将大于9的数字分开。
这是我的尝试产生超出范围的例外
123 45
在此示例中,我想要输出{{1}}
一般的想法是通过将左边的所有数字和右边的运算符移动来从中缀转换为后缀。
答案 0 :(得分:3)
你走这条路:
+
)字符替换为非数字(\D
)字符(" "
)\D+
将7/(2 + 3)-13
更改为7 2 3 13
String str = "17/(2 + 3)-13";
str = str.replaceAll("\\D+", " ");
System.out.println(str); // 17 2 3 13