在使用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; }
请帮忙。 感谢
答案 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"));