[英]Splitting String using split method
我想拆分這樣的字符串:
C:\Program\files\images\flower.jpg
但是,使用以下代碼:
String[] tokens = s.split("\\");
String image= tokens[4];
我得到了這個錯誤:
11-07 12:47:35.960: E/AndroidRuntime(6921): java.util.regex.PatternSyntaxException: Syntax error U_REGEX_BAD_ESCAPE_SEQUENCE near index 1:
嘗試
String s="C:\\Program\\files\\images\\flower.jpg"
String[] tokens = s.split("\\\\");
在java(正則表達式世界) \\
是一個元字符。 如果要將元字符視為普通字符,則應附加一個\\或用\\ Q \\ E括起來。
下面是一些元字符
<([{\^-=$!|]})?*+.>
要將上面列出的任何字符視為普通字符,您必須使用'\\'將其轉義或將它們括在\\ Q \\ E周圍
喜歡:
\\\\ or \\Q\\\\E
您需要使用\\\\\\\\
進行拆分,因為原始字符串應該具有\\\\
。 使用以下測試用例自行嘗試:
@Test
public void split(){
String s = "C:\\Program\\files\\images\\flower.jpg";
String[] tokens = s.split("\\\\");
String image= tokens[4];
assertEquals("flower.jpg",image);
}
解釋字符串有兩個級別,首先語言解析器使它成為"\\"
,這就是正則表達式引擎看到的並且它是無效的,因為它是一個沒有字符轉義的轉義序列。
所以你需要使用s.split("\\\\\\\\")
,以便正則表達式引擎看到\\\\
,這反過來意味着文字\\
。
如果要在字符串文字中定義該字符串,則必須轉義那里的反斜杠:
String s = "C:\\Program\\files\\images\\flower.jpg";
String [] tokens = s.split(“\\\\\\\\”);
嘗試這個:
String s = "C:/Program/files/images/flower.jpg";
String[] tokens = s.split("/");
enter code hereString image= tokens[4];
您的原始輸入文本應該是
C:\\Program\\files\\images\\flower.jpg
代替
C:\Program\files\images\flower.jpg
這有效,
public static void main(String[] args) {
String str = "C:\\Program\\files\\images\\flower.jpg";
str = str.replace("\\".toCharArray()[0], "/".toCharArray()[0]);
System.out.println(str);
String[] tokens = str.split("/");
System.out.println(tokens[4]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.