-1

"1+2+3*4"文字列のようなものを取り、すべての文字の間にスペースを追加し、スペースが多すぎる場合は削除するメソッドを作成する必要があります。渡された文字列にはスペースが含まれる場合と含まれない場合があります。各文字の間にスペースが 1 つだけあることを確認する必要があります。

誰かがこれを達成するための最も簡単で複雑でない方法を提供してくれれば、とても感謝しています.

4

2 に答える 2

1

このソリューションは、各演算子の周りの空白を正規化します。

return expr.replaceAll("(?<=\\d)\\s*([-+/*])\\s*(?=\\d)", " $1 ");
于 2012-05-15T01:35:19.000 に答える
0

通常、わかりやすいコードの方が優れています。

トリッキーな正規表現を使用しない、より理解しやすいブルート フォース アプローチは、おそらくより遅く、String.replace を使用します。

  1. すべてのスペースを削除します。例えばString.replace(" ", "");
  2. 次に、すべての演算子をスペースのある演算子に置き換えます。 String.replace("+", " + ");

例: 完全なコード (警告 - テストされていません!)

 static final String[] ALL_MY_OPS = { "+", "-", "*", "//"};

 public static String cleanup(String in) {
    String result = in.replace(" ", "");  // remove all spaces
    for (String op : ALL_MY_OPS) {
       String replacement = " " + op + " ";
       result = result.replace(op, replacement);
    }

    return result;
 }
于 2012-05-15T23:26:27.447 に答える