2017-07-07 54 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); 
}