使用带有多个分隔符的 String.split()

IT小君   2021-09-15T00:13:51

我需要根据分隔符-.. 下面是我想要的输出。

AA.BB-CC-DD.zip ->

AA
BB
CC
DD
zip 

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

private void getId(String pdfName){
    String[]tokens = pdfName.split("-\\.");
}
点击广告,支持我们为你提供更好的服务
评论(14)
IT小君

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

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

您将匹配的内容:
[DASH 后跟 DOT 在一起]-.
不是
[DASH 或 DOT 中的任何一个] -.

2021-09-15T00:13:52   回复
IT小君

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

2021-09-15T00:13:52   回复
IT小君

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

String[] tokens=pdfName.split("\\W");
2021-09-15T00:13:52   回复
IT小君

使用番石榴你可以这样做:

Iterable<String> tokens = Splitter.on(CharMatcher.anyOf("-.")).split(pdfName);
2021-09-15T00:13:52   回复
IT小君

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

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

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

2021-09-15T00:13:52   回复
IT小君

对于作为分隔符“AND”和“OR”的两个字符序列,这应该起作用。使用时不要忘记修剪。

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

结果:城市 = {“伊斯坦布尔”、“纽约”、“巴黎”、“东京”、“莫斯科”}

2021-09-15T00:13:53   回复
IT小君

我会使用 Apache Commons:

进口 org.apache.commons.lang3.StringUtils;

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

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

2021-09-15T00:13:53   回复
IT小君
String[] token=s.split("[.-]");
2021-09-15T00:13:53   回复
IT小君

最好使用这样的东西:

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

添加了一些其他字符作为示例。这是最安全的使用方式,因为方式.方式'都是如此。

2021-09-15T00:13:53   回复
IT小君

您还可以在 split() 方法中指定正则表达式作为参数..见下面的例子..

private void getId(String pdfName){
String[]tokens = pdfName.split("-|\\.");
}
2021-09-15T00:13:53   回复
IT小君

试试这个代码:

var string = 'AA.BB-CC-DD.zip';
array = string.split(/[,.]/);
2021-09-15T00:13:54   回复
IT小君

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

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

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

2021-09-15T00:13:54   回复
IT小君
s.trim().split("[\\W]+") 

应该管用。

2021-09-15T00:13:54   回复
IT小君

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

请参考以下片段:

String[] tmp = pdfName.split(".");
String val1 = tmp[0];
tmp = tmp[1].split("-");
String val2 = tmp[0];
...
2021-09-15T00:13:54   回复