[英]Groovy removing extra empty lines in StringBuilder Object
尝试删除由StringBuilder制作的文件中2个空行以外的所有多余空行。 该代码是普通的,所以我似乎不明白为什么简单的Java过程似乎不起作用。 尝试了3件事...有什么建议吗? 请参阅下面的代码段
private static final removeExtraLines1(StringBuilder text)
{
String twoLines = "MIAW";
Pattern extraLines = Pattern.compile("\n")
text.replaceAll(extraLines, twoLines);
}
private void removeExtraLines(StringBuilder text)
{
int i = 0;
while(i < text.length()-1)
{
if(text.charAt(i) == System.lineSeparator() && text.charAt(i++) == System.lineSeparator())
{
text.deleteCharAt(i++);
System.out.println("REPLACED AN EMPTY LINE");
}
}
}
@Override
String toString()
{
def padding = " " * (4 * (level - 1) )
padding + "cat level $level [$title]: " +
contained.collect {
it.toPaddedString(padding) }
////My Code
String twoLines = System.lineSeparator()+System.lineSeparator();
Pattern extraLines = Pattern.compile(System.lineSeparator()+ System.lineSeparator()+ System.lineSeparator()+System.lineSeparator())
_toString().replaceAll(extraLines, twoLines)
}
这里的问题是每种方法都有一个错误:
replaceAll()
不会修改StringBuilder
。 而是返回一个新的String
。 另外,正则表达式不正确。 最简单的方法是使用带有适当正则表达式的replaceAll()
,然后使用replace()
获取replaceAll()
的输出,并使其成为StringBuilder
的全部内容:
private static final removeExtraLines1(StringBuilder text) {
text.replace(0, text.size(), builder.replaceAll('\n\n', '\n'))
}
您需要使用++ i(预增量)而不是i ++(后增量)
if(text.charAt(i) == System.lineSeparator() && text.charAt(++i) == System.lineSeparator())
{
text.deleteCharAt(++i);
System.out.println("REPLACED AN EMPTY LINE");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.