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

时间:2019-04-12 17:41:34

标签: java list split whitespace

假设我有一个列表:

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]。我该如何解决?

2 个答案:

答案 0 :(得分:1)

实际上,输出是正确的。

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

one\n
\n
two three

正则表达式中的 +

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

表示一个或多个。 问题是:您在替换\ n字符后进行了分割!,因此现在数组中只有一个字符串。

更改此:

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

与此:

this.str.split("@");

答案 1 :(得分:1)

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

@的数量是您在this.str中拥有的新行的数量。 现在,如果您这样做:

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

您将获得["one", "", "two three"],即原始this.str中的行数