2017-10-20 153 views
-1

創建子字符串我試圖創建substrings從一個字(labelA)到另一個(labelB),反之亦然發生的string的方法。在while循環

如果字符串The Number2 quick Number1 onyx goblin jumps Number1 over the lazy dwarf Number2

我試圖讓它們之間的標籤,被分配到子變量的字符串。

所以它輸出向量將具有在每次運行類似於此值,而循環

temp.addElement("Number2"); 
temp.add("The"); 

然後

temp.addElement("Number1"); 
temp.add("quick "); 

然後

temp.addElement("Number1"); 
temp.add("onyx goblin jumps "); 

然後

temp.addElement("Number2"); 
temp.add("over the lazy dwarf "); 

這是我曾嘗試

private Vector cutter(String str){ 
    Vector thisPlan - new Vector(); 
    Vector temp = new Vector(); 
    try{ 
     int i =0; 
     int end = 0; 
     String labelA = "Number1:"; 
     String labelB = "Number2:"; 
     String Sub = ""; 
     int pos = 0; 
     while(i<r.length()){ 
     try{ 
      pos = str.indexOf(labelA, pos); 
      Sub = str.substring(pos,str.length()); 
      pos++; 
     }catch(Exception e){ 
      pos = str.indexOf)(labelB, pos); 
      Sub = str.substring(pos,str.length()); 
       pos++; 
     } 
     if(!labelA.equals(labelB) || (labelA.equals(labelB) && !StringUtil.scrub(Sub).equals(""))){ 
      temp.addElement(labelA); 
      temp.add(Sub); 
     } 
     if(!labelA.equals(labelB) || (labelA.equals(labelB) && !StringUtil.scrub(Sub).equals(""))){ 
      temp.addElement(labelB); 
      temp.add(Sub); 
      } 
      temp = new Vector(); 
     } catch (Exception e){ 
     } 
     return thisPlan; 
    } 
} 

請幫幫忙,並至少給建議,我怎麼能做到這一點。

+0

什麼是你的代碼的問題? – APerson

+0

它不工作只是捕捉異常。 –

+0

顯示錯誤日誌。 – KeLiuyue

回答

1

String.split(String)會相信這樣的伎倆:

"The Number2 quick Number1 onyx goblin jumps Number1 over the lazy dwarf Number2 ") 
    .split("Number2|Number1") 

等於

["The ", " quick ", " onyx goblin jumps ", " over the lazy dwarf ", " "] 

它看起來很像我相信你正在尋找。

要還保持分離"Number1""Number2"劃定字符串,您可以使用zero-width positive lookahead and lookbehind expressions作爲https://stackoverflow.com/a/19951885/1840078How to split a string, but also keep the delimiters?使用:

"The Number2 quick Number1 onyx goblin jumps Number1 over the lazy dwarf Number2 " 
    .split("(?=Number[12])|(?<=Number[12])") 

等於

["The ", "Number2", " quick ", "Number1", " onyx goblin jumps ", 
    "Number1", " over the lazy dwarf ", "Number2", " "] 
+1

呀可以請您詳細闡述 –

+1

非常感謝有它 –

+0

不客氣!我正要在'private Vector cutter(String str)'方法中爲'Vector'轉換代碼添加一些'String []'到我的答案。很高興你能夠自己到達那裏。 :) –