2014-01-13 80 views
1

字符串條件運行一個如果我有一個String數組如下。for循環,直到JAVA

String[] name = {"aval", "H ---- ", "Singh", "Sawh", "Raman", " ---- ", "parminder", "kaur", "jaspreet", "asneet", " ---- "}; 

我想將「H ----」之間的所有內容複製到「----」。也就是說它應該是「SinghSawhRaman」(不包括「H ----」和「 - 」

事情是這樣的:

String keywords = ""; 
int j = 0; 
for(int i = 0; i < name.length; i++){ 
if(name[i].contains("H ---- ")){ 
    for(j = i; j < 5; j++){  
    // There problem is j < 5. I want to give a condition when name[i].contains(" ---- ") 
    // but not sure how should I be able to do it. 
    keywords = keywords + name[j]; 
    } 

是否有人可以告訴我最好的辦法?此

回答

3
for(j = i; !name[j].contains(" ---- "); j++){ 
     keywords = keywords + name[j]; 
    } 

這應該爲你工作,你可以設置一個for循環的中斷條件是任何布爾表達式

編輯:在有需要的!爲L當條件不成立時,操作符會中斷。

0

您使用contains代替equals任何理由嗎?

如果使用equals也替你安排,你可以使用一個List

String[] name = {"aval", "H ---- ", "Singh", "Sawh", "Raman", " ---- ", "parminder", "kaur", "jaspreet", "asneet", " ---- "}; 
List<String> s = Arrays.asList(name); 
StringBuilder sb = new StringBuilder(); 
for(int i = s.indexOf("H ---- ")+1; i < s.indexOf(" ---- "); i++) 
    sb.append(s.get(i)); 
System.out.println(sb); 
0

我會做它像這樣

private static String copyFrom(String[] in, String begin, String end) { 
    StringBuilder sb = new StringBuilder(); 
    boolean start = false; 
    if (in != null) { 
     for (String s : in) { 
      if (!start) { 
       start = s.equals(begin); 
      } else { 
       start = !s.equals(end); 
       if (start) { 
        sb.append(s); 
       } 
      } 
     } 
    } 
    return sb.toString(); 
} 

public static void main(String[] args) { 
    String[] name = {"aval", "H ---- ", "Singh", "Sawh", 
       "Raman", " ---- ", "parminder", "kaur", 
       "jaspreet", "asneet", " ---- "}; 
    String keywords = copyFrom(name, "H ---- ", " ---- "); 
    System.out.println(keywords); 
} 

輸出

SinghSawhRaman 
0
String keywords = ""; 
boolean append = false; 
for(j = 0; j <= name.length; j++) { 
    if(name[j].contains("H----") 
     append = true; 
    if(append) 
     keywords += name[j]; 
    if(name[j].contains("----") { 
     append = false; 
     break; 
    } 
} 

注意th在,如果移動if(append)塊下方的if(name[j].contains("H----")塊,你會排除在keywords字符串H---;

0

只要跳出外環一旦你的病情已經達到:

boolean capture = false; 
    for (String n : name) { 
     if (n.contains("H ---- ")) { 
      capture = true; 
     } else if (n.contains(" ---- ")) { 
      break; 
     } else if (capture) { 
      keywords = keywords + n; 
     } 
    } 

如果存在的H ----和多次發生,那就不要break圈外,而是簡單地設置capture = false代替break

有兩個嵌套的循環,你會讀,使一個名稱的一部分兩次的任何元素,這是低效的。除非是可能的名稱都以嵌套H ----,你最好去除內循環。

0
String[] name = {"aval", "H ---- ", "Singh", "Sawh", "Raman", " ---- ", "parminder", "kaur", "jaspreet", "asneet", " ---- "}; 
String key =""; 
boolean flag = false; 
for(String s : name){ 
    if(s.equals("H ---- ")){ 
flag = true; 
} 
if(s.equals(" ---- ")){ 
flag = false; 
} 
if(flag && !s.equals("H ---- ")){ 
key+=s; 
} 
} 
System.out.println(key);