在“{”或“;”之后添加换行符或者在使用字符串构建器时在java中使用“}”

时间:2014-12-03 06:24:02

标签: java regex string stringbuilder

在使用stringbuilder类时,我需要在每个“{”或“}”或“;”之后附加“\ n”。然后需要在文件中写入相同内容。

stringbuilder对象的输出,即

System.out.println(sb.toString());

nav {  ul {    list-style: none;    margin: 0;    padding: 0;  }  li { display: inline-block; }  a {        display: block;    padding: 6px 12px;    text-decoration: none;  }

请帮忙。 感谢

5 个答案:

答案 0 :(得分:8)

使用如下所示的正面观察。

string.replaceAll("(?<=[{;}])", "\n");

<强>解释

  • (?<=[{;}])肯定的外观断言,匹配必须以{};符号开头。

  • 如果在后视后没有给出令牌,那么它与边界匹配。在我们的例子中,它会匹配{};符号之后存在的所有边界。

  • \n换行符替换所有匹配的边界将为您提供所需的输出。

答案 1 :(得分:5)

您可以使用:

System.out.println( sb.toString().replaceAll("([{};])", "$1\n") );

此正则表达式使用字符类{匹配} OR ;[{};]中的任何一个,并将其捕获到$1(后引用)。在替换中,我们只是$1后跟\n(换行符),在这些字符后插入换行符。

答案 2 :(得分:2)

我建议您迭代String的字符,并在任何候选字符{};之后添加换行符

String str = "nav {  ul {    list-style: none;    "
    + "margin: 0;    padding: 0;  }  li { "
    + "display: inline-block; }  a { display: block;"
    +"    padding: 6px 12px;    text-decoration: none;  }";
for (char ch : str.toCharArray()) {
    System.out.printf("%c", ch);
    if (ch == '{' || ch == '}' || ch == ';') {
        System.out.println();
    }
}

输出(按要求)

nav {
  ul {
    list-style: none;
    margin: 0;
    padding: 0;
  }
  li {
 display: inline-block;
 }
  a {
 display: block;
    padding: 6px 12px;
    text-decoration: none;
  }

答案 3 :(得分:0)

创建一个条件:

试试这个。

        char [] arraySb = sb.toCharArray();
        String result = "";

        for(char singleLetter : arraySb){
            if(singleLetter == '{' || singleLetter == '}' || singleLetter == ';'){
                result += (singleLetter + "\n");
            }else{
                result += singleLetter;
            }
        }

答案 4 :(得分:0)

尝试以下Java代码:

String line = "nav {  ul {    list-style: none;    margin: 0;    padding: 0;  }  li { display: inline-block; }  a {        display: block;    padding: 6px 12px;    text-decoration: none;  }";
System.out.println(line.replaceAll("(?<=(\\{|\\}|;))", "\n"));