我需要基于定界符-
和分割字符串.
。以下是我想要的输出。
AA.BB-CC-DD.zip
->
AA
BB
CC
DD
zip
但我的以下代码不起作用。
private void getId(String pdfName){
String[]tokens = pdfName.split("-\\.");
}
AA
/ BB
/ CC
...)
我需要基于定界符-
和分割字符串.
。以下是我想要的输出。
AA.BB-CC-DD.zip
->
AA
BB
CC
DD
zip
但我的以下代码不起作用。
private void getId(String pdfName){
String[]tokens = pdfName.split("-\\.");
}
AA
/ BB
/ CC
...)
Answers:
我认为您需要包括regex OR运算符:
String[]tokens = pdfName.split("-|\\.");
您将匹配的内容:
[DASH之后再加上DOT],-.
而不是
[其中的DASH或DOT] -
,.
.
正则表达式中的字符表示换行符以外的任何其他字符。tutorialspoint.com/java/java_regular_expressions.htm但是,在这种情况下,他们需要实际的字符.
。两个反斜杠表示您所指的是.
。反斜杠是转义字符。
.split("match1|match2")
,(例如split("https|http")
,\\是逃避特殊字符).
在上述情况下
pdfName.split("\\W");
以下@Peter Knego答案
[-.]
代替-|\\.
试试这个正则表达式"[-.]+"
。+之后将连续的定界符char视为1。如果您不希望这样做,请删除加号。
-
是,它是内的第一个想法[]
,否则它前面必须有一个反斜杠(当然,要在它前面加上一个反斜杠,我们需要两个,因为这是字符串文字)。
您可以使用正则表达式“ \ W”。它与任何非单词字符匹配。所需的行为:
String[] tokens=pdfName.split("\\W");
\W
。
您提供split
的字符串是正则表达式的字符串形式,因此:
private void getId(String pdfName){
String[]tokens = pdfName.split("[\\-.]");
}
这意味着要分割中的任何字符[]
(我们必须-
用反斜杠转义,因为它在内部是特殊的[]
;当然,我们必须转义反斜杠,因为这是一个字符串)。(相反,.
通常是特殊的,但在内部不是特殊的[]
。)
[-.]
不可能将其解释为范围。
String[] strings = codes.get(x).split("\\[|\\]| ");
<-感兴趣的代码
对于两个字符序列作为分隔符“ AND”和“ OR”,应进行此操作。使用时不要忘记修剪。
String text ="ISTANBUL AND NEW YORK AND PARIS OR TOKYO AND MOSCOW";
String[] cities = text.split("AND|OR");
结果:城市= {“伊斯坦布尔”,“纽约”,“巴黎”,“东京”,“莫斯科”}
最好使用这样的东西:
s.split("[\\s\\-\\.\\'\\?\\,\\_\\@]+");
添加了其他一些字符作为示例。这是使用最安全的方式,因为这样.
并'
进行处理。
您也可以在split()方法中将正则表达式指定为参数..请参见以下示例...。
private void getId(String pdfName){
String[]tokens = pdfName.split("-|\\.");
}
如果您知道字符串将始终采用相同的格式,请首先基于分割字符串,.
然后将字符串存储在变量的第一个索引处。然后,基于第二个索引拆分字符串,-
并存储索引0、1和2。最后,基于拆分前一个数组的索引2,.
您应该已经获得了所有相关字段。
请参考以下代码段:
String[] tmp = pdfName.split(".");
String val1 = tmp[0];
tmp = tmp[1].split("-");
String val2 = tmp[0];
...
pdfName.split(".")
导致长度为零的数组。
.
需要逃脱,因为\\.