在保留空格的同时从字符串中提取数字

时间:2017-10-14 09:21:57

标签: java

给定一个字符串,我想提取数字并在它们之间保持间距。 此过程通常涉及删除所有间距,以便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}}

一般的想法是通过将左边的所有数字和右边的运算符移动来从中缀转换为后缀。

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

Regex demo