Java-使用正则表达式将字符串拆分为不同的字段
有人知道如何将WS返回的字符串拆分为不同的字符串吗Java-使用正则表达式将字符串拆分为不同的字段,java,regex,string,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"; 注意: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";
注意:WS的返回只更改我的参数中的内容
提前感谢您的帮助一种简单的方法是使用
wsResult.split(“,”
)。但是,您必须在75250
和Paris
之间添加一个逗号:
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];
使用它,您将获得所需的输出
编辑
获取输出而不添加逗号的另一种方法是这样做(也使用上面的代码):
对于(int i=1;i您可以在4个捕获组中捕获数据。您提供的示例使用大写字符,可以与[A-Z]
匹配。
如果要同时匹配小写字符、数字和下划线,可以将[A-Z]
或[A-Z\d]
替换为\w
。
您可以通过多种方式实现这一点。一种方法可以是:
解释
- 组1:匹配一个或多个大写字符或空格
([a-Z]+)
- 匹配逗号和一个或多个空格
,+
- 组2:匹配一个或多个大写字符或数字、空格或点
([A-Z\d.]+)
- 匹配逗号和一个或多个空格
,+
- 组3:匹配一个或多个数字
(\d+)
- 匹配一个或多个空格
+
- 第4组:匹配一个或多个大写字符或数字、开/闭括号或空格
([A-Z\d()]+)
到目前为止,您尝试了什么?什么不起作用?您需要一个常量结构才能使用正则表达式或.split
。您的问题不清楚这种情况是否适用。您确定地址部分本身不会有任何逗号吗?如果是这种情况,您可以使用正则表达式来查找组。类似这样的情况可能不适用rk在您的例子中:(.*),(.*),(\d{5})()您可以在线检查regexp的行为,例如:取决于您想如何解析该信息…(?[\w.-+?)\s*,\s*(?[\w.-]+?)\s*,\s*(?\d+\s*(?[^())+)(?:\s+.*)$
或\s*,\s*(?@ctwheels看起来像Python regex,不是吗?
for(int i = 1; i<postalCode.length(); i++){
if(postalCode.charAt(i) == ' ') {
city = postalCode.substring(i,postalCode.length());
postalCode = postalCode.substring(0,i);
break;
}
}