正規表現であり、これString.replaceAll(regex, replacement)
が答えです。
正規表現は心のフェイント向けではありませんが、あなたの場合は次のようになります。
String result = input.replaceAll(
"\\(\\s*(\\p{Punct})\\s+(\\d+)\\s+(\\d+)\\)",
"($2 $1 $3)");
編集....エイドリアンの答えは私のものと「ほぼ」同じであり、あなたにより適しているかもしれません。私の答えは、「/」文字は「句読点」文字であり、「/」のみを処理するのではなく、結果にコピーする必要があると想定しています。
\p{Punct}
技術的には、数学演算子だけが必要な場合は、次のようなものに置き換えることができます[-+/*]
(「-」が常に最初に来ることに注意してください)。
OK、実際の例:
public static void main(String[] args) {
String input = "(/ 5 6) + (/ 8 9) - (/ 12 3)";
String regex = "\\(\\s*(\\p{Punct})\\s+(\\d+)\\s+(\\d+)\\)";
String repl = "($2 $1 $3)";
String output = input.replaceAll(regex, repl);
System.out.printf("From: %s\nRegx: %s\nRepl: %s\nTo : %s\n",
input, regex, repl, output);
}
プロデュース:
From: (/ 5 6) + (/ 8 9) - (/ 12 3)
Regx: \(\s*(\p{Punct})\s+(\d+)\s+(\d+)\)
Repl: ($2 $1 $3)
To : (5 / 6) + (8 / 9) - (12 / 3)