可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I need to split a string base on delimiter -
and .
. Below are my desired output.
AA.BB-CC-DD.zip
->
AA
BB
CC
DD
zip
but my following code does not work.
private void getId(String pdfName){
String[]tokens = pdfName.split(\"-\\\\.\");
}
回答1:
I think you need to include the regex OR operator:
String[]tokens = pdfName.split(\"-|\\\\.\");
What you have will match \"-.\" not a \"-\" or a \".\"
回答2:
Try this regex \"[-.]+\"
. The + after treats consecutive delimiter chars as one. Remove plus if you do not want this.
回答3:
You can use the regex \"\\W\".This matches any non-word character.The required line would be:
String[] tokens=pdfName.split(\"\\\\W\");
回答4:
Using Guava you could do this:
Iterable<String> tokens = Splitter.on(CharMatcher.anyOf(\"-.\")).split(pdfName);
回答5:
The string you give split
is the string form of a regular expression, so:
private void getId(String pdfName){
String[]tokens = pdfName.split(\"[\\\\-.]\");
}
That means to split on any character in the []
(we have to escape -
with a backslash because it\'s special inside []
; and of course we have to escape the backslash because this is a string). (Conversely, .
is normally special but isn\'t special inside []
.)
回答6:
I\'d use Apache Commons:
import org.apache.commons.lang3.StringUtils;
private void getId(String pdfName){
String[] tokens = StringUtils.split(pdfName, \"-.\");
}
It\'ll split on any of the specified separators, as opposed to StringUtils.splitByWholeSeparator(str, separator)
which uses the complete string as a separator
回答7:
For two char sequence as delimeters \"AND\" and \"OR\" this should be worked. Don\'t forget to trim while using.
String text =\"ISTANBUL AND NEW YORK AND PARIS OR TOKYO AND MOSCOW\";
String[] cities = text.split(\"AND|OR\");
Result : cities = {\"ISTANBUL \", \" NEW YORK \", \" PARIS \", \" TOKYO \", \" MOSCOW\"}
回答8:
You may also specified regular expression as argument in split() method ..see below example....
private void getId(String pdfName){
String[]tokens = pdfName.split(\"-|\\\\.\");
}
回答9:
It\'s better to use something like this:
s.split(\"[\\\\s\\\\-\\\\.\\\\\'\\\\?\\\\,\\\\_\\\\@]+\");
Have added a few other characters as sample. This is the safest way to use, because the way .
and \'
is treated.
回答10:
s.trim().split(\"[\\\\W]+\")
should work.
回答11:
If you know the sting will always be in the same format, first split the string based on .
and store the string at the first index in a variable. Then split the string in the second index based on -
and store indexes 0, 1 and 2. Finally, split index 2 of the previous array based on .
and you should have obtained all of the relevant fields.
Refer to the following snippet:
String[] tmp = pdfName.split(\".\");
String val1 = tmp[0];
tmp = tmp[1].split(\"-\");
String val2 = tmp[0];
...