Java 如何将所有空行替换为“空”@&引用;?

Java 如何将所有空行替换为“空”@&引用;?,java,list,split,whitespace,Java,List,Split,Whitespace,假设我有一份清单: List<Strings> lines = new ArrayList<String>(); lines.add("one"); lines.add(""); lines.add("two three"); 我试图创建一个计算行数的方法,但是,它无法识别空行。我尝试过这样做: this.str = this.str.replaceAll("\n", "@"); String[] words = this.str.split("[\\r\\n]+");

假设我有一份清单:

List<Strings> lines = new ArrayList<String>();
lines.add("one");
lines.add("");
lines.add("two three");
我试图创建一个计算行数的方法,但是,它无法识别空行。我尝试过这样做:

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

如果我调用
System.out.println(Arrays.toString(words)
,我希望得到
[1,@,2-3]
,但是,我得到的是
[1@@2-3]
。我如何解决这个问题呢?

实际上,输出是正确的

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

正则表达式中的+

this.str.split("[\\r\\n]+");
指一个或多个。 问题是:您在替换字符之后进行了拆分!,因此现在数组中只有一个字符串

更改此项:

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

this.str.split("@");

实际上,输出是正确的

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

正则表达式中的+

this.str.split("[\\r\\n]+");
指一个或多个。 问题是:您在替换字符之后进行了拆分!,因此现在数组中只有一个字符串

更改此项:

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

this.str.split("@");

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

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

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

您将得到
[“一”、“二、三”]
,这是原始
this.str
this.str
中的行数。str
实际上包含字符串:
一个\n\n两个三个
。这就是执行后的原因: this.str=this.str.replaceAll(“\n”,“@”);
this.str
现在包含:“一@@二三”

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

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

您将获得
[“一”、“二”、“三”]
,这是原始
this.str

中的行数。答案不取决于您未指定的语言吗?答案不取决于您未指定的语言吗?如果列表中包含两行空行,则只是一个附带问题。添加(“”)
两次,我想得到
['',]
,也会像你建议的那样工作吗?是的,看起来像是
this.str
你从字符串数组中转换出来的字符串将成为
\n\n
字符串。一般来说,对于你添加到
并转换为
this.str
,一个
\n
字符串将添加到它的末尾。我刚刚尝试过same、 但是我最终得到了
[]
,这有什么问题吗?请分享你是如何将字符串数组转换为str的,如果列表中包含两行空行,我将尝试帮助解决一个附带问题,即
行。添加(“”
两次,我想得到
[“”,“”]
,也会像你建议的那样工作吗?是的,看起来像是
this.str
你从字符串数组中转换出来的字符串将成为
\n\n
字符串。一般来说,对于你添加到
并转换为
this.str
,一个
\n
字符串将添加到它的末尾。我刚刚尝试过same、 但是我最终得到了
[]
,这有什么问题吗?请分享您如何将字符串数组转换为str,我将尽力提供帮助