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,我将尽力提供帮助