:
更新されたコードビット:我々はまた、以下の方法を使用する必要があります。私はあなたが修正しなければならないいくつかの不具合を残しました。 (例えば、あなたの{ブラケット}は現在のところインデントされておらず、セミコロンごとに改行が追加されています)
インデントは「深さ」カウンタによって処理され、たす。
各反復をより詳細に制御するには、foreachの代わりにforループを使用することを検討してください。多分 `ライン= line.replaceAll(『^』、"「)
public String parse(String input) {
StringBuilder output = new StringBuilder();
int depth = 0;
boolean isNewLine = false;
boolean wasSpaced = false;
boolean isQuotes = false;
String tab = " ";
for (char c : input.toCharArray()) {
switch (c) {
case '{':
output.append(c + "\n");
depth++;
isNewLine = true;
break;
case '}':
output.append("\n" + c);
depth--;
isNewLine = true;
break;
case '\n':
isNewLine = true;
break;
case ';':
output.append(c);
isNewLine = true;
break;
case '\'':
case '"':
if (!isQuotes) {
isQuotes = true;
} else {
isQuotes = false;
}
output.append(c);
break;
default:
if (c == ' ') {
if (!isQuotes) {
if (!wasSpaced) {
wasSpaced = true;
output.append(c);
}
} else {
output.append(c);
}
} else {
wasSpaced = false;
output.append(c);
}
break;
}
if (isNewLine) {
output.append('\n');
for (int i = 0; i < depth; i++) {
output.append(tab);
}
isNewLine = false;
}
}
return output.toString();
}
(私はあなたにそれが行われるかもしれない方法のアイデアを与えるために汚いこのクイックN」を書いた); ' –
私はあなたがする必要があると思いますあなたが何をしたいのかを知るために、必要なもののサンプル、入力と出力を提供してください。 –
あなたの問題が正しいインデントを計算しているか、行を正しくインデントしているのかどうかは不明です。あなたのコードを示し、私たちが知るように観察された行動を指定してください。あなたに有用な指針を与えるのは私たちの唯一のチャンスです。 –