2011-02-12 20 views
10

Por ejemplo, dada una cadena de Battle of the Vowels:Hawaii vs Gronzy cuando especificamos los caracteres que se eliminarán como aeiou, la función debe transformar la cadena en Bttl f th V wls:Hw vs Grzny.Eliminar caracteres específicos de la cadena en Java

Encontré esta pregunta en el libro Programming Interviews Exposed. Esto fue explicado en C, sin embargo, estoy interesado en Java.

+2

¿Está proponiendo intentar implementar esto? ¿Qué has intentado hasta ahora? No vamos a hacerlo por usted. –

+0

Estaba pidiendo ideas de la comunidad para diferentes formas de implementarlo. – SuperMan

Respuesta

18

Una forma sencilla de hacerlo es utilizar una expresión regular:

"Battle of the Vowels:Hawaii vs Gronzy".replaceAll("[aeiou]","") 

Parte de la documentación de la API de biblioteca de clases de Java:

String.replaceAll: http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#replaceAll(java.lang.String,%20java.lang.String)

patrones y expresiones regulares : http://download.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html#sum

+0

Intenté esto: 's1 = s1.replaceAll (s2," "); \t System.out.println (s1); 'pero no funciona. Parece que esta solución solo funciona, cuando especificamos los cahractes que se eliminarán. – Hengameh

0
public class RemoveCharacters 
{ 
    static String removeCharsFromString(String word1, String word2) 
    { 
     StringBuilder sb = new StringBuilder(word1); 

     System.out.println(sb); 
     //char[] word2characters= word2.toCharArray(); 
     HashMap<Character, Integer> table = new HashMap<Character, Integer>(); 

     for (int i = 0; i < word2.length(); i++) 
     { 
      table.put(word2.charAt(i), 1); 

     } 

     int p = 0; 
     for (int i = 0; i < word1.length(); i++) 
     { 

      if (table.containsKey(word1.charAt(i))) 
      { 
       if (p == 0) 
       { 
        sb.deleteCharAt(i); 
        //p++; 
       } 
       else 
       { 
        sb.deleteCharAt(i - p); 
       } 
       //System.out.println(sb); 
       p++; 
      } 

     } 

     return sb.toString(); 
    } 

    public static void main(String[] args) 
    { 
     System.out.println("Enter your string"); 
     Scanner sc = new Scanner(System.in); 
     String originalword = sc.nextLine(); 

     System.out.println("Enter the remove string"); 
     Scanner sc1 = new Scanner(System.in); 
     String removecharacters = sc1.nextLine(); 

     String result = removeCharsFromString(originalword, removecharacters); 

     System.out.println(result); 
    } 
} 
1
public class RemoveChars { 

    char[] replaceChar = {'a','e','i','o','u'}; 

    public static void main(String[] args) { 
     String src = "Battle of the Vowels:Hawaii vs Gronzy"; 
     System.out.println(new RemoveChars().removeChar(src)); 
    } 

    public String removeChar(String src){ 
     char[] srcArr = src.toCharArray(); 
     StringBuilder sb = new StringBuilder(); 
     for (int i = 0; i < srcArr.length; i++) { 
      char foundChar = isFound(srcArr[i]); 
      if(foundChar!='\0') 
      sb.append(foundChar);   
     } 
     return sb.toString(); 

    } 

    public char isFound(char src){  
     for (int i = 0; i < replaceChar.length; i++) { 
      if(src==replaceChar[i]){ 
       return '\0'; 
      } 
     } 
     return src; 
    } 
} 
Cuestiones relacionadas