我想沿着空格分割一个字符串,忽略空格(如果它们包含在单引号中),以及忽略单引号(如果它们被转义)(即\'),下面是另一个问题的补充。
String s = "Some message I want to split 'but keeping this a\'s a single string' Voila!";
for (String a : s.split(" (?=([^\']*\'[^\"]*\')*[^\']*$)")) {
System.out.println(a);
}
上面代码的输出是
Some
message
I
want
to
split
'but
keeping
this
'a's a single string'
Voila!
但是,如果需要将单引号转义(\'),则需要忽略这些单引号,而上述情况不会这样做。此外,当且仅当(正斜杠)转义单引号(到'this is a \'string'
变为this is a 'string
)时,我才需要删除第一个和最后一个单引号和正斜杠。我不知道如何使用正则表达式。我将如何完成?
您需要在后面使用负数来处理转义的单引号:
String str =
"Some message I want to split 'but keeping this a\\'s a single string' Voila!";
String[] toks = str.split( " +(?=((.*?(?<!\\\\)'){2})*[^']*$)" );
for (String tok: toks)
System.out.printf("<%s>%n", tok);
输出:
<Some>
<message>
<I>
<want>
<to>
<split>
<'but keeping this a\'s a single string'>
<Voila!>
PS:正如你指出的是,逃过单引号需求为要输入\\'
的String
分配,否则它将作为普通对待'
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句