我需要基于定界符-和分割字符串.。以下是我想要的输出。
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(".")导致长度为零的数组。
.需要逃脱,因为\\.