[英]Splitting String by Regex
我在這里有這個字符串: M412 Rex | -HEADSHOT-
M412 Rex | -HEADSHOT-
。 我想把它拆分為|
獲取名字,但我的代碼沒有按預期工作。
System.out.println("weaponPart = " + weaponPart);
String[] weaponPartParts = weaponPart.split(" | ");
for (String s : weaponPartParts) {
System.out.println("s = " + s);
}
System.out.println();
打印出來:
weaponPart = M412 Rex | -HEADSHOT-
s = M412
s = Rex
s = |
s = -HEADSHOT-
我假設它與正則表達式匹配有關,但實際上是怎么回事?
你必須雙重逃避|
這是正則表達式中的特殊字符: \\\\|
。
. 換句話說,您的實際模式意味着 。
因此,好的方針是:
String[] weaponPartParts = weaponPart.split(" \\| ");
作為旁邊評論這些特殊字符\\ | ( ) [ { ^ $ * + ? .
\\ | ( ) [ { ^ $ * + ? .
是“臟打”。
用戶\\\\|
而不是|
更改
String[] weaponPartParts = weaponPart.split("|");
至
String[] weaponPartParts = weaponPart.split("\\|");
您還可以使用Pattern.quote
方法來轉義任何特殊字符:
String[] weaponPartParts = weaponPart.split(Pattern.quote(" | "));
來自Java文檔 :
此方法生成一個String,該String可用於創建與字符串s匹配的Pattern,就好像它是文字模式一樣。
輸入序列中的元字符或轉義序列將沒有特殊含義。
你需要逃避|,我的意思是..
String[] weaponPartParts = weaponPart.split(" \\| ");
String weaponPart = "M412 Rex | -HEADSHOT-";
System.out.println("First Name::"+weaponPart.split("\\|")[0]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.