作者qrtt1 (有些事,有时候。。。)
看板java
标题Re: [问题] 分割字串的问题, 求救 >"<
时间Tue May 7 09:56:04 2013
有时候看这类的需求,
不太复杂能用字串切割搞定的却用了 Regular Expression
用 Regular Expression 写会很快的,却被遗忘了 Orz
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Foo {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("
(\"[^\"]+\"),?|([^,]+),?");
String str = "小尚,\"Abby, Sun\",girl,0911-XXX0L9,si,1988/11/20";
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
if (matcher.group(1) != null) {
System.out.println(matcher.group(1));
}
if (matcher.group(2) != null) {
System.out.println(matcher.group(2));
}
}
}
}
用 2 组规则去 match 它,
1. 含 " 的字串,就设它中间的任何字元不会出现 " 看到 ", 就停下
2. 另外正常的规则,就是内部不会再出现 逗号 看到 逗号就停下
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.130.128.164
※ 编辑: qrtt1 来自: 220.130.128.164 (05/07 09:57)
1F:推 popcorny:推!! 其实可以简化成(\"[^\"]+\"|[^,]+),? 只要看group1 05/07 10:15
2F:推 popcorny:顺便处理csv中的""的问题(\"(?:\"\"|[^\"])+\"|[^,]+),? 05/07 10:29
3F:→ qrtt1:改得太棒了 05/07 10:44
4F:→ swpoker:我只想到要处理\n的问题,还有"''" or '""'等跳脱~re比较好 05/07 14:04