使用String.split()和多个分隔符
我需要分割一个string基于分隔符-和.  。 以下是我所需的输出。 
  AA.BB-CC-DD.zip – > 
 AA BB CC DD zip 
但我的下面的代码不起作用。
 private void getId(String pdfName){ String[]tokens = pdfName.split("-\\."); } 
	
我认为你需要包含正则expression式OR运算符:
 String[]tokens = pdfName.split("-|\\."); 
你所拥有的将会匹配“ – ”。 不是“ – ” 或 “”。
 试试这个正则expression式"[-.]+" 。 将连续的分隔符作为一个字符后的+。 删除加号,如果你不想要这个。 
您可以使用正则expression式“\ W”。它匹配任何非单词字符。所需的行将是:
 String[] tokens=pdfName.split("\\W"); 
使用番石榴,你可以这样做:
 Iterable<String> tokens = Splitter.on(CharMatcher.anyOf("-.")).split(pdfName); 
你给的string是一个正则expression式的stringforms,所以:
 private void getId(String pdfName){ String[]tokens = pdfName.split("[\\-.]"); } 
 这意味着要拆分[]中的任何字符(我们必须使用反斜线 – 因为它在[]是特殊的;当然,我们必须避免使用反斜杠,因为这是一个string)。  (相反, .通常是特殊的,但在[]内不是特别的。) 
我会使用Apache Commons:
  import org.apache.commons.lang3.StringUtils; 
 private void getId(String pdfName){ String[] tokens = StringUtils.split(pdfName, "-."); } 
 它会分割任何指定的分隔符,而不是使用完整的string作为分隔符的StringUtils.splitByWholeSeparator(str, separator) 
 如果你知道sting将始终是相同的格式,首先根据分割string. 并将第一个索引中的string存储在一个variables中。 然后根据-拆分第二个索引中的string,并存储索引0,1和2.最后,根据前一个数组拆分索引2 . 你应该已经获得了所有的相关领域。 
请参阅以下代码片段:
 String[] tmp = pdfName.split("."); String val1 = tmp[0]; tmp = tmp[1].split("-"); String val2 = tmp[0]; ... 
你也可以在split()方法中指定正则expression式作为参数。
 private void getId(String pdfName){ String[]tokens = pdfName.split("-|\\."); } 
最好是使用这样的东西:
 s.split("[\\s\\-\\.\\'\\?\\,\\_\\@]+"); 
 已经添加了一些其他字符作为示例。 这是最安全的方式,因为方式. 和'被对待。 
 s.trim().split("[\\W]+") 
应该工作。