簡體   English   中英

使用拆分方法拆分字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM