2017-07-07 64 views
-6

我有以下String變量從字符串中提取特定部分

String s = "abc,xyz,lmn,ijk"; 

我想提取字符串中只有部分(i.e - 'lmn'

而且,不宜用內置功能如SubString(), Split(), IndexOf().但我可以使用charArray()

這個問題在我的採訪中被問到。

我試了下面的代碼, 但是不知道如何繼續。任何人都可以提供你的想法嗎?

String s = "abc,xyz,lmn,ijk"; 
    int counter = 0; 

    char[] ch = s.toCharArray(); 
    for (int i = 0; i < ch.length; i++) { 
     if (ch[i] == ',') { 
      counter++; 
     } 

    } 
+0

您是否嘗試過使用調試器來查看發生了什麼? –

+0

在接受採訪時?真的,bcz它聞起來像做作業 –

+0

@rabbitguy - 你有解決辦法嗎? – Aishu

回答

1

這裏有一種方法:

public static void main(String[] args) { 
    String s = "abc,xyz,lmn,ijk"; 
    char[] ch = s.toCharArray(); 
    int counter = 0; 
    int place = 2; 

    for (int i = 0; i < ch.length-2; i++) { 
     if(ch[i] == ',') { 
      counter++; 
     } 
     if(counter == place && ch[i] != ',') { 
      System.out.print(ch[i]); 
     } 
    } 
} 

它打印出第二個逗號後的一切,但第三人之前。

+0

其實,我想從該字符串中獲得第三個元素。在這種情況下,它應該是'lmn',但它可以是其他任何東西 – Aishu

+0

基本上,我想從第三個逗號(,)位置開始迭代並獲取每個字符,直到找到下一個逗號 – Aishu

+0

@Aishu好吧,我已經修復了我的帖子。如果你想打印不同的3個字母,只需更換地方。現在可以接受嗎? – CodingNinja

1
public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    String s = "abc,xyz,lmn,ijk"; 
    StringBuffer sb=new StringBuffer(); 
    char[] ch = s.toCharArray(); 

    for (int i = 0; i < ch.length; i++) { 
     if(','==(ch[i])) 
     { 
      if (sb.toString().equals("lmn")) { 
       System.out.println(sb.toString()); 
      } 
      else 
      { 
       int length=sb.length(); 
       sb.delete(0, length); 
      } 

     } 
     else 
     { 
      sb.append(ch[i]); 
     } 


    } 

} 
1

我會這樣做。

String s = "abc,xyz,lmn,ijk"; 
String x = "c,x"; // String to found 
String r = ""; 

boolean coincidence = false; 

int a=0; // Initial index if of the first character in x is found 
int b=0; // Last index If it was possible to search for the last character of x 
int c=0; // Index "iterator" on String x 

char[] ch = s.toCharArray(); 
for (int i = 0; i < ch.length; i++) { 
    if(c == x.length()) 
    break; 
    else{ 
    if(ch[i] == x.charAt(c) && !coincidence){ 
     a = i; b = i; c++; 
     coincidence = true; 
    } 
    else if(ch[i] == x.charAt(c) && coincidence){ 
     b++; c++; 
    }else{ 
     coincidence = false; 
     a = 0; b = 0; c = 0; 
    } 
    } 
} 

System.out.println("String: " + s); 
System.out.println("String to find: " + x); 
System.out.println("Was found? " + ((coincidence)? "Yes" : "No")); 

if(coincidence){ 
    System.out.println("Intervals indexes in String: ["+a + "," + b +"]"); 
    // String extration 
    for (int i = a; i <= b; i++) 
    r += s.charAt(i); 

    System.out.println("String extracted: " + r); 
}