看板 java 關於我們 聯絡資訊
有時候看這類的需求, 不太複雜能用字串切割搞定的卻用了 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)
popcorny:推!! 其實可以簡化成(\"[^\"]+\"|[^,]+),? 只要看group1 05/07 10:15
popcorny:順便處理csv中的""的問題(\"(?:\"\"|[^\"])+\"|[^,]+),? 05/07 10:29
qrtt1:改得太棒了 05/07 10:44
swpoker:我只想到要處理\n的問題,還有"''" or '""'等跳脫~re比較好 05/07 14:04