2017-10-14 48 views
0

给定一个字符串,我想提取数字并保持它们之间的间距。 此过程通常涉及到删除所有间距,以便12 3变为123我正在避免。从字符串中提取数字,同时保留空格

例如,如果输入是17/(2 + 3)-13我想要17 2 3 13

我也有提取运算符和括号它们之间的方法,但我不能单独的数字大于9

这里是我的尝试产生出界异常

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); 
} 

在这个例子我想输出123 45

一般的想法是通过将左边的所有数字和右边的操作符都转换为后缀。

+0

也许在'while'循环后面附加'kajigger'的空格? – Codebender

回答

3

你去通过这种方式:

  • 用一个空格替换所有多个下面这些都是非数字(\D)(+)字符(" "
  • 所以\D+改变7/(2 + 3)-137 2 3 13

String str = "17/(2 + 3)-13"; 
str = str.replaceAll("\\D+", " "); 
System.out.println(str); // 17 2 3 13 

Regex demo

+1

为什么不能\\ D +?那么你不需要两个替代品 – jontro