提问人:Ajm Kir 提问时间:8/4/2023 最后编辑:azroAjm Kir 更新时间:8/7/2023 访问量:69
在 java 中解析字符串以将其全部放在一行中
Parsing string in java to get it all on one line
问:
我有如下所示的字符串:
String s = "ABC123,DEF,
TEST,JJJ,
123456 0
789123 2
555555 3"
我想解析它,让它看起来像
String s = "ABC123,DEF,TEST,JJJ,123456 0 789123 2 555555 3
到目前为止,我所做的是:
String s = s.replaceAll("\\R+",""));
这给了我想要的:
String s = "ABC123,DEF,TEST,JJJ,123456 0789123 2555555 3
这在一定程度上有效,但所有的数字都粘在一起,这无济于事,所以我现在遇到了障碍。
答:
1赞
Arvind Kumar Avinash
8/4/2023
#1
您可以将前面的换行符替换为空字符串,然后将其链接起来,仅将换行符替换为空格。,
s = s.replaceAll(",\\R+","").replaceAll("\\R+"," ");
System.out.println(s);
输出:
ABC123,DEFTEST,JJJ123456 0 789123 2 555555 3
1赞
azro
8/4/2023
#2
您可以将所有空格序列减少到一个空格,然后删除逗号后面的空格
s.replaceAll("\\R+"," ").replaceAll(", ", ",")
0赞
WJS
8/4/2023
#3
and I want to parse it so it looks like
String s = "ABC123,DEF,TEST,JJJ,123456 0 789123 2 555555 3
带有行终止符的当前字符串。
String s = """
ABC123,DEF,
TEST,JJJ,
123456 0
789123 2
555555 3
""";
- 首先将行终止符替换为空格
- 然后用一个逗号替换。这里不需要正则表达式。
", "
String result = s.replaceAll("\\R+"," ").replace(", ",",");
System.out.println(result);
指纹
ABC123,DEF,TEST,JJJ,123456 0 789123 2 555555 3
0赞
Reilas
8/7/2023
#4
由于条件似乎是行是否以逗号结尾,因此只需使用 for 循环即可。
String[] strings = s.split("\\R+");
s = "";
for (String string : strings) {
s += string;
if (!string.endsWith(",")) s += " ";
}
输出
ABC123,DEF,TEST,JJJ,123456 0 789123 2 555555 3
值得注意的是,某些输出将具有尾随空格字符,您可以使用 String#trim 方法,或者只是在 for 循环中放置额外的检查。
评论
s = s.lines().collect(Collectors.joining(" "));