假设我有一个列表:
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]
。我该如何解决?
答案 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
中的行数