【发布时间】:2016-11-04 19:28:57
【问题描述】:
我正在尝试在给定的分隔符处拆分字符串,以允许分隔符在引号内被忽略。例如。
"foo; bar; 'foo; bar'"
在给定分隔符 ';' 的情况下应该被分割成 3 个字符串并引用 char ':
foo
bar
foo; bar
我正在使用StrTokenizer,如下所示,但它似乎不适用于"foo; bar; 'foo; bar'",但它确实适用于"'foo; bar'; foo; bar;"
谁能解释一下哪里出了问题?
import org.apache.commons.lang3.text.StrTokenizer;
public class Main {
public static void main(String[] args) {
String x= "foo; bar; 'foo; bar'";
StrTokenizer tokens= new StrTokenizer(x, ';', '\'');
for (String token : tokens.getTokenArray()) {
System.out.println(token.trim());
}
// Prints:
// foo
// bar
// 'foo
// bar'
/* --------- */
// THIS IS OK:
x= "'foo; bar'; foo; bar";
tokens= new StrTokenizer(x, ';', '\'');
for (String token : tokens.getTokenArray()) {
System.out.println(token.trim());
}
// Prints:
// foo; bar
// foo
// bar
}
}
【问题讨论】: