2017-10-20 155 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 []'到我的答案。很高兴你能够自己到达那里。 :) –