使用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]+")
应该工作。