【问题标题】:How To Parse String In Java With * [duplicate]如何使用 * 在 Java 中解析字符串 [重复]
【发布时间】:2021-05-19 11:43:42
【问题描述】:

我有一个这样的字符串。

PER*IP**TE**1234567890*EM*sampleEmail@Email.com

如何在 Java 中像这样将字符串解析成多行?

PER
IP
TE
//Empty String
EM
1234567890
sampleEmail@Email.com

【问题讨论】:

  • 为什么TE后面有空字符串,IP后面没有? EM去哪儿了?
  • 是否在数字前给出空字符串?

标签: java


【解决方案1】:

您可以使用正则表达式替换:

String input = "PER*IP**TE*1234567890*EM*sampleEmail@Email.com";
String output = input.replaceAll("\\*", "\n");
System.out.println(output);

打印出来:

PER
IP

TE
1234567890
EM
sampleEmail@Email.com

【讨论】:

    【解决方案2】:
    String newstring = string.replace("*", "\n");
    System.out.println(newstring);
    

    现在,如果您不希望出现空行,请使用:

    String string = "PER*IP**TE**1234567890*EM*sampleEmail@Email.com"
    String newstring = string.replaceAll("\\*+","*").replace("*", "\n");
    System.out.println(newstring);
    

    【讨论】:

    • 是的,抱歉,拼错了
    【解决方案3】:

    您可以使用String#split。由于* 是正则表达式元字符,您需要使用反斜杠对其进行转义或使用Pattern#quote

    Arrays.stream("PER*IP**TE**1234567890*EM*sampleEmail@Email.com".split(Pattern.quote("*")))
       .forEach(System.out::println);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-01
      • 2013-02-17
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多