【发布时间】:2017-02-03 11:22:20
【问题描述】:
考虑我有一个这样的字符串:
String str = "a,b,c,d," + char1 + "e,f" + char2 + ",g,h,i,j";
如何使用, 拆分所有内容,避免char1 和char2 之间的所有内容,而不是,。
只有当char1 = '(' 和char2 = ')' 像这样时,我才能使用此正则表达式,(?![^()]*\\)) 进行拆分:
char char1 = '(', char2 = ')';
String str = "a,b,c,d," + char1 + "e,f,g" + char2 + ",h";
String s2[] = str.toString().split(",(?![^()]*\\))");
我得到这个结果:
a
b
c
d
e,f,g
h
那么如何将其概括为使用char1 和char2 中的任何字符。
谢谢。
【问题讨论】:
-
“任何字符”是什么意思? char1 和/或 char2 可以是 ','(逗号)吗?
-
这个问题似曾相识……看看here
-
@Betlista nope 抱歉不能是
,我忘了这部分我会编辑我的问题 -
是否可以在连接之前拆分字符串?如果没有,您是否能够在连接之前控制 char1 和 char2 是什么?这样你就可以在两者中输入一个通配符,这样你就可以将正则表达式集中在那个通配符上。
-
使用
"(?:" +Pattern.quote(char1) + ".*?" + Pattern.quote(char2) + "|[^,])+"匹配令牌。