我正在编写一个程序,应该在每; { }
之后插入一个结束语。但是有一种情况是我的代码在每;
之后插入一个结束行。整个表达式在字符串变量中。
for(int i=0;i<10;i++) { //any code}
它会将其转换为
for(int i=0;
i<10;
i++) {
//any code
}
我希望输出如下:
for(int i=0;i<10;i++) {
//anything
}
我的代码是:
StringBuilder sb = new StringBuilder(input);
for (int i = 0; i < sb.length(); i++) {
if (sb.charAt(i) == ';' ) {
sb.insert(i + 1, '\n');
}
if (sb.charAt(i) == '}') {
sb.insert(i + 1, '\n');
}
if (sb.charAt(i) == '{') {
sb.insert(i + 1, '\n');
}
}
答案 0 :(得分:0)
你可以向前看。你需要 ';' 和'{'符号在一行中。您的if语句可用作或操作。例如,如果有';'则设置一些标志在行中,如果您设置了'{'和标记,则插入换行符。
答案 1 :(得分:0)
也许你可以检查分号是否介于paranthesis之间。如果是,则不要添加新行(\n
),如果不是,则添加。
StringBuilder sb = new StringBuilder(input);
boolean paranthesis = false;
for (int i = 0; i < sb.length(); i++) {
if (sb.charAt(i) == '('){
paranthesis = true;
}
else if (sb.charAt(i) == ')'){
paranthesis = false;
}
else if (sb.charAt(i) == ';' ) {
if (!paranthesis)
sb.insert(i + 1, '\n');
}
else if (sb.charAt(i) == '}') {
sb.insert(i + 1, '\n');
}
else if (sb.charAt(i) == '{') {
sb.insert(i + 1, '\n');
}
}
请参阅此实施live here。