Java - 使用正则表达式将字符串拆分到不同的字段

时间:2018-01-15 15:41:52

标签: java regex string

有没有人知道如何将WS返回的字符串拆分为不同的字符串?

String wsResult = "SONACOM RC, RUE DES ETOILES N. 20, 75250 PARIS (MI)";

我正试图把它分成:

String name = "SONACOM RC";
String adress = "RUE DES ETOILES N. 20";
String postalCode = "75250";
String city = "PARIS";

N.B:WS的返回仅改变我的参数内部

提前感谢您的帮助

2 个答案:

答案 0 :(得分:1)

您可以在4个捕获组中捕获数据。您提供的示例使用大写字符,您可以将其与[A-Z]匹配。 如果您还要匹配小写字母,数字和下划线,则可以将[A-Z][A-Z\d]替换为\w。 你可以通过多种方式解决这个问题。一种方法可能是:

([A-Z ]+), +([A-Z\d .]+), +(\d+) +([A-Z\d() ]+)

<强>解释

  • 第1组:匹配一个或多个大写字符或空格([A-Z ]+)
  • 匹配逗号和一个或多个空格, +
  • 第2组:匹配一个或多个大写字母或数字或空格或点([A-Z\d .]+)
  • 匹配逗号和一个或多个空格, +
  • 第3组:匹配一个或多个数字(\d+)
  • 匹配一个或多个空格+
  • 第4组:匹配一个或多个大写字母或数字或打开/关闭括号或空格([A-Z\d() ]+)

Output in Java

答案 1 :(得分:0)

根据您的喜好分割它的一种简单方法是使用wsResult.split(",")。但是,您必须在75250Paris之间添加逗号:

String wsResult = "SONACOM RC, RUE DES ETOILES N. 20, 75250, PARIS (MI)";
String[] temp = wsResult.split(",");
String name = temp[0];
String adress = temp[1];
String postalCode = temp[2];
String city = temp[3];

使用它,您将获得您正在寻找的输出。

修改

另一种在不添加逗号的情况下获取输出的方法是执行此操作(使用上面的代码):

for(int i = 1; i<postalCode.length(); i++){

    if(postalCode.charAt(i) == ' ') {
        city = postalCode.substring(i,postalCode.length());
        postalCode = postalCode.substring(0,i);
        break;
    }

}

有关详情,请查看the String class in the API Javathis Stack Overflow question