2016-01-03 4 views
0

Как я могу найти букву в строке (если это «cc» вместе, она ее покидает, но если это только «c», она удаляет ее)?Как найти определенный символ в строке программно

Я понятия не имею, как это сделать, поэтому, если кто-то знает, я был бы очень благодарен.

Я пробовал разбивать целую строку на вкладку и проверять, является ли индекс «c», а затем ищет + -1 индекс, чтобы проверить, находится ли «c» рядом с ним, но это не сработало.

Теперь я изменил «==», но он все еще пропускает некоторые буквы. если я вход "abaabbcbaccb" он должен вывести → "aabaaaabbaaccb" Моя программа пропускает этот автономный "с" ..

public class NovNiz{ 
public static String urejanjeBesedila(String a){ 
    String niz=""; 
    a.toLowerCase(); 
    String spr = a.replaceAll("a", "aa"); 
    spr = spr.toLowerCase(); 
    spr = spr.replaceAll("bb", "b"); 
    String []tab=spr.split(" "); 
    if(tab.length>0){ 
     for(int i=0;i<tab.length;i++){ 
      if(tab[i].indexOf("cc")>0){ 
       niz=niz+tab[i]+" "; 
       continue;   

      } 
      if(tab[i].indexOf("c")>=0){ 
        int x=tab[i].indexOf("c"); 
        StringBuffer sb= new StringBuffer(tab[i]); 
        sb.deleteCharAt(x); 
        tab[i]=sb.toString(); 
        } 
      niz=niz+tab[i]+" "; 
     } 
    } 
    else{ 
     String []tab2=spr.split(""); 
      for(int i=0;i<tab.length;i++){ 
       if(i==0){ 
        if("c".equals(tab[i])&&"c".equals(tab[i+1])){ 

        } 
        else if("c".equals(tab[i])){ 
         tab[i]=""; 
        } 
       } 
       else{ 
       if("c".equals(tab[i])&&"c".equals(tab[i+1])||"c".equals(tab[i-1])){ 

        } 
       else if("c".equals(tab[i])){ 
        tab[i]=""; 
        } 
       } 
      } 
     } 
    return niz; 
} 

}

+2

' [i] == "c" 'не так, как вы сравниваете' String 'в Java, вместо этого вы должны использовать что-то вроде' 'c '.equals (tab [i])' – MadProgrammer

+1

'spr.toLowerCase();' is не то, как вы превращаете весь символ spr в нижний регистр. Вместо этого вы должны использовать что-то вроде 'spr = spr.toLowerCase();' – SMA

+1

Oh, а 'String' является неизменным в Java – MadProgrammer

ответ

1

Вы можете просто сделать: закладку

final String input = "I'm a test string to drop 'c' but not 'cc', 'ccc', 'cccc', ok ?"; 

String result = input 
        .replaceAll("c([^c])", "$1") 
        .replaceAll("c([^c])", "cc$1"); 

// result will be "I'm a test string to drop '' but not 'cc', 'ccc', 'cccc', ok ?" 
+0

Спасибо, этот работал. : D – ScaredFace

+0

Но не могли бы вы объяснить это регулярное выражение? («c ([^ c])», «$ 1») («c ([^ c])», «cc $ 1») – ScaredFace

+0

Первое выражение, которое следует за c, за которым следует буква, которая не является ac, и заменяет эти обе буквы буквой, которая не является переменной ac ($ 1 относится к группе fisrt между скобками в выражении). Выполнение этого похоже на удаление одного c для каждой последовательности c. Затем второй повторяет добавление c для каждой оставшейся последовательности c для завершения. – Prim

Смежные вопросы