在所有分号后插入endline,除了for循环中的两个分号

时间:2016-10-08 19:10:01

标签: java string char

我正在编写一个程序,应该在每; { }之后插入一个结束语。但是有一种情况是我的代码在每;之后插入一个结束行。整个表达式在字符串变量中。

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');
    }
}

2 个答案:

答案 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