[英]Split String with special characters in Java
我有一个带有许多逗号的字符串,例如:
1,2,3,4,5,"one, two", 6, 7, "three, four", 8, 9
我想用逗号 (,) 分割这个字符串,但是带引号的部分不应该被分割。 有没有一种简单的方法可以做到这一点,或者我应该准备这个字符串,例如用其他东西替换逗号:
1,2,3,4,5,"one#COMMA# two", 6, 7, "three#COMMA# four", 8, 9
然后用逗号(,)分割
您可以按,
后跟一个可选的空白字符\s*
进行拆分,并进行否定预测。 此正则表达式将识别有资格拆分输入字符串的逗号。
,(?![^,]+"\s*,)\s*
解释如下,演示在这里: https://regex101.com/r/ghNMVo/1 :
,
字面意思是逗号(?,[^,]+"\s*,)
是一个否定前瞻,如果在(?!
... )
之间列出的以下字符在逗号 ( ,
) 之后没有找到,则匹配。这基本上标识了结束一个 String 后跟逗号(例如...four",
),这意味着,只要后面跟着一个 String,前面的逗号就不会匹配拆分。
[^,]+
至少一个字符,逗号本身除外"
后跟"
字面匹配\s*
任意数量的空白字符,
后跟,
字面匹配\s*
是可选的空白字符应用于Java时,不要忘记对字符进行转义。
final String string = "1,2,3,4,5,\"one, two\", 6, 7, \"three, four\", 8, 9";
final String[] array = string.split(",(?![^,]+\"\\s*,)\\s*");
Arrays.asList(array).forEach(System.out::println);
1 2 3 4 5 "one, two" 6 7 "three, four" 8 9
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.