2017-10-14 8 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)-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

+1

なぜ\\ D +ではないのですか?その後、あなたは2つの交換が必要ありません – jontro

関連する問題