我试图拆分字符串可以由用户指定的任何字符或字符分隔,例如逗号,分号和/或管道。为了清洁和灵活,我最好喜欢数组中的这些分隔符(无论是字符串还是字符或正则表达式,无论是否有效)。爪哇 - 分割字符串,可以是管道分隔(“\ I”),逗号分隔(“‘),分号分隔(’;”)和其他
String[] stringsToSplit = {"alpha,bravo,charlie", "delta;echo;foxtrot", "golf|hotel|india", "juliet\nkilo\nlima"};
String[] acceptedNonEscapedDelims = {"," , ";"};
String[] acceptedEscapedDelims = {"\\|" , "\\n"};
我只能让它使用硬编码的正则表达式工作。
String[] values = string.split("\\n|\\||\\t|,|;");
一些关于存储在一个字符串数组的正则表达式是使得下文中不起作用。
String[] values = string.split(acceptedEscapedDelims[0]);
我可以为每个可能的分隔符,拆分使用每一个单独的硬编码一个布尔标志,但这种做法似乎是两轮牛车给我。对于这样一个简单的事情来说,它也是非常费力的。如果分别处理每个分隔符,则需要进行许多特殊处理:例如,测试字符串是否包含逗号(在尝试使用逗号分割之前),否则您将获得单个字符的数组元素。
*问题1 *:可1串已经使用多个定界符(例如将' “A,B; C | d \ NE”'是有效的输入,如果有的话,它会被分成5个元素?)。 *问题2 *:数据实际上包含逗号的字符串会发生什么,例如'“'道尔顿,蒂莫西';'康纳利,肖恩';”'? –
'的String []值= string.split(acceptedEscapedDelims [0]);'工作得很好:https://ideone.com/xLox9T – Keppil