在 java 中解析字符串以将其全部放在一行中

Parsing string in java to get it all on one line

提问人:Ajm Kir 提问时间:8/4/2023 最后编辑:azroAjm Kir 更新时间:8/7/2023 访问量:69

问:

我有如下所示的字符串:

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

这在一定程度上有效,但所有的数字都粘在一起,这无济于事,所以我现在遇到了障碍。

Java 字符串 解析

评论

0赞 g00se 8/4/2023
s = s.lines().collect(Collectors.joining(" "));

答:

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 循环中放置额外的检查。