如何用“@”替换所有空白行?

问题描述 投票:0回答:2

假设我有一个清单:

List<Strings> lines = new ArrayList<String>();
lines.add("one");
lines.add("");
lines.add("two three");

当我将它转换为字符串即this.str时,它给了我以下内容:

one

two three

我正在尝试创建一个计算行数的方法,但是,它不识别空行。我试过这样做:

this.str = this.str.replaceAll("\n", "@");
String[] words = this.str.split("[\\r\\n]+");

如果我打电话给System.out.println(Arrays.toString(words),我期待得到[one, @, two three],但是,我得到[one@@two three]而不是。我该如何解决这个问题?

java list split whitespace
2个回答
1
投票

this.str实际上包含字符串:one\n\ntwo three。这就是执行后的原因:this.str = this.str.replaceAll(“\ n”,“@”); this.str现在包含:'one @@ two three`。

@的数量是你在this.str新线的数量。现在,如果你这样做:

String[] words = this.str.split("@");

你会得到["one", "", "two three"],这是你原来的this.str中的行数


1
投票

实际上,输出是正确的。

字符串str在单词“one”后面有两个换行符。

one\n
\n
two three

正则表达式中的+:

this.str.split("[\\r\\n]+");

表示一个或多个。问题是:你在更换\ n char!后拆分,所以现在你在数组中有一个字符串。

改变这个:

this.str.split("[\\r\\n]+");

有了这个:

this.str.split("@");
© www.soinside.com 2019 - 2024. All rights reserved.