我需要根据分隔符-
和.
. 下面是我想要的输出。
AA.BB-CC-DD.zip
->
AA
BB
CC
DD
zip
但我下面的代码不起作用。
private void getId(String pdfName){
String[]tokens = pdfName.split("-\\.");
}
我需要根据分隔符-
和.
. 下面是我想要的输出。
AA.BB-CC-DD.zip
->
AA
BB
CC
DD
zip
但我下面的代码不起作用。
private void getId(String pdfName){
String[]tokens = pdfName.split("-\\.");
}
试试这个正则表达式"[-.]+"
。后面的 + 将连续的分隔符字符视为一个。如果您不想要这个,请删除加号。
您可以使用正则表达式“\W”。这匹配任何非单词字符。所需的行是:
String[] tokens=pdfName.split("\\W");
使用番石榴你可以这样做:
Iterable<String> tokens = Splitter.on(CharMatcher.anyOf("-.")).split(pdfName);
您给出split
的字符串是正则表达式的字符串形式,因此:
private void getId(String pdfName){
String[]tokens = pdfName.split("[\\-.]");
}
这意味着要拆分中的任何字符[]
(我们必须-
用反斜杠转义,因为它在 里面很特殊[]
;当然我们必须转义反斜杠,因为这是一个字符串)。(相反,.
通常是特殊的,但内部并不特殊[]
。)
对于作为分隔符“AND”和“OR”的两个字符序列,这应该起作用。使用时不要忘记修剪。
String text ="ISTANBUL AND NEW YORK AND PARIS OR TOKYO AND MOSCOW";
String[] cities = text.split("AND|OR");
结果:城市 = {“伊斯坦布尔”、“纽约”、“巴黎”、“东京”、“莫斯科”}
我会使用 Apache Commons:
进口 org.apache.commons.lang3.StringUtils;
private void getId(String pdfName){
String[] tokens = StringUtils.split(pdfName, "-.");
}
它将在任何指定的分隔符上拆分,而不是StringUtils.splitByWholeSeparator(str, separator)
使用完整的字符串作为分隔符
String[] token=s.split("[.-]");
最好使用这样的东西:
s.split("[\\s\\-\\.\\'\\?\\,\\_\\@]+");
添加了一些其他字符作为示例。这是最安全的使用方式,因为方式.
和方式'
都是如此。
您还可以在 split() 方法中指定正则表达式作为参数..见下面的例子..
private void getId(String pdfName){
String[]tokens = pdfName.split("-|\\.");
}
试试这个代码:
var string = 'AA.BB-CC-DD.zip';
array = string.split(/[,.]/);
pdfName.split("[.-]+");
[.-]
->.
或 中的任何一个-
都可以用作分隔符
+
表示如果上述分隔符连续出现,我们应该将其视为一个。
s.trim().split("[\\W]+")
应该管用。
如果您知道字符串将始终采用相同的格式,请首先拆分字符串.
,并将字符串存储在变量中的第一个索引处。然后根据-
和存储索引 0、1 和 2在第二个索引中拆分字符串。最后,根据.
您应该已经获得所有相关字段,拆分前一个数组的索引 2 。
请参考以下片段:
String[] tmp = pdfName.split(".");
String val1 = tmp[0];
tmp = tmp[1].split("-");
String val2 = tmp[0];
...
我认为您需要包含正则表达式OR 运算符:
您将匹配的内容:
[DASH 后跟 DOT 在一起]
-.
不是
[DASH 或 DOT 中的任何一个]
-
或.