2013-10-29 55 views
0

我使用String.split()方法拆分XML元素。 XML元素的格式如下所示:拆分,修剪和分配Java中的數組元素

start:23 |停止:43 |名稱:ABC DEF

分割字符串,我想修剪和分配類似以下後:

String[] parts = oneLine.split("\\s*\\|\\s*"); // splits into 3 strings 
for (int x = 0; x < parts.length; x++) { 
    String tmp = parts[0]; 
    if (tmp.startsWith("start:")) { 
     tmp = tmp.substring("start:".length()); 
     try { 
      this.begin = Integer.parseInt(tmp); 
     } 
     catch (NumberFormatException nfe) { 
      nfe.printStackTrace(); 
     } 
    } 
    else { 
     System.err.println("Wrong format"); 
    } 

    String tmp1 = parts[1]; 
    if (tmp1.startsWith("stop:")) { 
       tmp1 = tmp1.substring("stop:".length()); 
       try { 
        this.end = Integer.parseInt(tmp1); 
       } 
       catch (NumberFormatException nfe) { 
        nfe.printStackTrace(); 
       } 
      } 
      else { 
       System.err.println("Wrong format"+tmp1); 
      } 
    Strint tmp2 = parts[2]; 
    if (tmp2.startsWith("name:")) { 
       tmp2 = tmp2.substring("name:".length()); 
       try { 
        this.name = tmp2; 
       } 
       catch (NumberFormatException nfe) { 
        nfe.printStackTrace(); 
       } 
      } 
      else { 
       System.err.println("Wrong format"+tmp2); 
      } 

這將返回一個錯誤Wrong format。這是否與作業String tmp1 = parts[0]有關?

+0

這不回答你的問題,但沒有任何意義恕我直言。爲什麼要使用for循環,然後僅分割零件[0],零件[1]和零件[2]?你可以跳過for循環,還是我錯了? –

+0

發佈您的完整代碼..沒有獲得使用if-else的目的? – Prateek

+0

而不是'for'循環,你應該更好地檢查'parts.length == 3'。此外,如果您需要解析數字,則應將其添加到正則表達式中,而不是同時執行匹配和子字符串操作。 – Sebastian

回答

0

回答我的問題。

  String[] parts= oneLine.split("\\s*\\|\\s*"); 
    //System.out.println(parts[0]); 
    String tmp=parts[0].substring("start:".length()); 
    this.begin=Integer.parseInt(tmp); 
    String tmp1=parts[1].substring("stop:".length()); 
    this.end=Integer.parseInt(tmp1); 
    String tmp2=parts[2].substring("name:".length()); 
    this.uri=tmp2; 

上面的代碼片斷解決我的問題