将String.split()与多个分隔符一起使用

时间:2011-05-13 14:56:36

标签: java regex

我需要在分隔符-.上拆分字符串。以下是我想要的输出。

AA.BB-CC-DD.zip - >

AA
BB
CC
DD
zip 

但我的以下代码不起作用。

private void getId(String pdfName){
    String[]tokens = pdfName.split("-\\.");
}

15 个答案:

答案 0 :(得分:283)

我认为您需要包含正则表达式 OR运算符

String[]tokens = pdfName.split("-|\\.");

你所拥有的将匹配:
[DASH跟着DOT一起] -.

[DASH或DOT中的任何一个] -.

答案 1 :(得分:47)

试试这个正则表达式"[-.]+"。 + after将连续的分隔符字符视为一个。如果您不想要,请删除加号。

答案 2 :(得分:24)

你可以使用正则表达式“\ W”。这匹配任何非单词字符。所需的行将是:

String[] tokens=pdfName.split("\\W");

答案 3 :(得分:12)

使用Guava你可以这样做:

Iterable<String> tokens = Splitter.on(CharMatcher.anyOf("-.")).split(pdfName);

答案 4 :(得分:10)

您提供的字符串split是正则表达式的字符串形式,因此:

private void getId(String pdfName){
    String[]tokens = pdfName.split("[\\-.]");
}

这意味着要分割[]中的任何字符(我们必须使用反斜杠转义-,因为它在[]内是特殊的;当然我们必须逃避反斜杠,因为这是一个字符串)。 (相反,.通常是特殊的,但[]内不是特殊的。)

答案 5 :(得分:3)

我使用Apache Commons:

导入org.apache.commons.lang3.StringUtils;

private void getId(String pdfName){
    String[] tokens = StringUtils.split(pdfName, "-.");
}

它会在任何指定的分隔符上拆分,而不是使用完整字符串作为分隔符的StringUtils.splitByWholeSeparator(str, separator)

答案 6 :(得分:3)

对于两个char序列作为delimeters&#34; AND&#34;和&#34;或&#34;这应该是有效的。在使用时不要忘记修剪。

 String text ="ISTANBUL AND NEW YORK AND PARIS OR TOKYO AND MOSCOW";
 String[] cities = text.split("AND|OR"); 

结果:cities = {&#34; ISTANBUL&#34;,&#34;纽约&#34;,&#34;巴黎&#34;,&#34; TOKYO&#34;,&#34;莫斯科&#34;}

答案 7 :(得分:0)

您也可以在split()方法中将正则表达式指定为参数..请参见下面的示例....

private void getId(String pdfName){
String[]tokens = pdfName.split("-|\\.");
}

答案 8 :(得分:0)

使用这样的东西会更好:

s.split("[\\s\\-\\.\\'\\?\\,\\_\\@]+");

添加了一些其他字符作为样本。这是最安全的使用方式,因为.'的处理方式。

答案 9 :(得分:0)

s.trim().split("[\\W]+") 

应该有用。

答案 10 :(得分:0)

尝试以下代码:

var string = 'AA.BB-CC-DD.zip';
array = string.split(/[,.]/);

答案 11 :(得分:0)

for word in lst:
    query = "CREATE (" + word + ":Word {word:'" + word + "})"
    session.run(query)

答案 12 :(得分:0)

恕我直言,正则表达式有时可能会过大 因为它们可能很难调试

plt.subplots
  

如果我需要比以上更好的性能,请依靠Webpack或LLVM +   脚本进行优化。

希望对您有帮助!

答案 13 :(得分:0)

pdfName.split("[.-]+");

  • [.-]-> .-中的任何一个都可用作分隔符

  • +符号表示,如果上述定界符连续出现,我们应将其视为一个。

答案 14 :(得分:-1)

如果你知道sting将始终采用相同的格式,首先根据.拆分字符串,并将字符串存储在变量的第一个索引处。然后根据-在第二个索引中拆分字符串并存储索引0,1和2.最后,根据.拆分前一个数组的索引2,你应该已经获得了所有相关的字段。

请参阅以下代码段:

String[] tmp = pdfName.split(".");
String val1 = tmp[0];
tmp = tmp[1].split("-");
String val2 = tmp[0];
...