Cómo eliminar un solo carácter de una cadena por índice

3 minutos de lectura

Avatar de usuario de Vikram
Vikram

Para acceder a los caracteres individuales de una cadena en Java, tenemos String.charAt(2). ¿Hay alguna función incorporada para eliminar un carácter individual de una cadena en Java?

Algo como esto:

if(String.charAt(1) == String.charAt(2){
   //I want to remove the individual character at index 2. 
}

  • ¿Puedes publicar un ejemplo real en el que quieras hacer esto?

    – Rohit Jain

    14 de noviembre de 2012 a las 19:43

  • Tienes que reemplazar, no eliminar. Es posible que deba escribir el suyo propio.

    – kosa

    14 de noviembre de 2012 a las 19:43

  • Puedes hacerlo con un couple de substring y indexOf. Pero eso creará un nuevo objeto de cadena.

    – Rohit Jain

    14 de noviembre de 2012 a las 19:44


  • StringBuilder es una clase de lectura/escritura para manipular caracteres. Puede crearlo a partir de una cadena y usar sb.toString() para obtener la cadena resultante.

    – Aubin

    14/11/2012 a las 19:50


Avatar de usuario de Bhesh Gurung
Bhesh Gurung

También puede utilizar el StringBuilder clase que es mutable.

StringBuilder sb = new StringBuilder(inputString);

tiene el metodo deleteCharAt()junto con muchos otros métodos mutadores.

Simplemente elimine los caracteres que necesita eliminar y luego obtenga el resultado de la siguiente manera:

String resultString = sb.toString();

Esto evita la creación de objetos de cadena innecesarios.

  • su respuesta parece no estar funcionando aquí … String numbers = "0123456789"; char c = '2'; numbers = numbers.replace(c, Character.MIN_VALUE); Quiero reemplazar el carácter ‘ ‘ (vacío)

    – Surajit Biswas

    3 de julio de 2020 a las 14:52


Avatar de usuario de Thuy
jue

Puede usar el método Java String llamado replace, que reemplazará todos los caracteres que coincidan con el primer parámetro con el segundo parámetro:

String a = "Cool";
a = a.replace("o","");

  • no responde a la pregunta cómo eliminar por índice.

    – Walv

    22 de octubre de 2021 a las 2:59

Una posibilidad:

String result = str.substring(0, index) + str.substring(index+1);

Tenga en cuenta que el resultado es una nueva cadena (así como dos objetos de cadena intermedios), porque las cadenas en Java son inmutables.

  • Esto funciona a menos que el índice haga referencia al último carácter de la cadena.

    – Alex K.

    3 sep 2021 a las 16:46

  • @AlexK No, funciona bien con el último carácter. Cuando index es el último carácter, entonces index+1 es igual a la longitud de la cuerda, y str.substring(str.length) devuelve una cadena vacía.

    – RoToRa

    1 abr a las 16:44

Avatar de usuario de Óscar López
Óscar López

No, porque las cadenas en Java son inmutables. Tendrá que crear una nueva cadena eliminando el carácter que no desea.

Para reemplazar un solo carácter c en la posición de índice idx en cadena strhaga algo como esto y recuerde que se creará una nueva cadena:

String newstr = str.substring(0, idx) + str.substring(idx + 1);

Avatar de usuario de Yash
Yash

String str = "M1y java8 Progr5am";

eliminarCharAt()

StringBuilder build = new StringBuilder(str);
System.out.println("Pre Builder : " + build);
    build.deleteCharAt(1);  // Shift the positions front.
    build.deleteCharAt(8-1);
    build.deleteCharAt(15-2);
System.out.println("Post Builder : " + build);

reemplazar()

StringBuffer buffer = new StringBuffer(str);
    buffer.replace(1, 2, ""); // Shift the positions front.
    buffer.replace(7, 8, "");
    buffer.replace(13, 14, "");
System.out.println("Buffer : "+buffer);

carbonizarse[]

char[] c = str.toCharArray();
String new_Str = "";
    for (int i = 0; i < c.length; i++) {
        if (!(i == 1 || i == 8 || i == 15)) 
            new_Str += c[i];
    }
System.out.println("Char Array : "+new_Str);

Avatar de usuario de Darkstarone
estrella oscura

Considere el siguiente código:

public String removeChar(String str, Integer n) {
    String front = str.substring(0, n);
    String back = str.substring(n+1, str.length());
    return front + back;
}

Avatar de usuario de BlizzaN
ventiscaN

Para modificar Strings, lea sobre StringBuilder porque es mutable excepto por String inmutable. Las diferentes operaciones se pueden encontrar aquí. https://docs.oracle.com/javase/tutorial/java/data/buffers.html. El fragmento de código a continuación crea un StringBuilder y luego agrega la Cadena dada y luego elimina el primer carácter de la Cadena y luego vuelve a convertirlo de StringBuilder a una Cadena.

StringBuilder sb = new StringBuilder();

sb.append(str);
sb.deleteCharAt(0);
str = sb.toString();

¿Ha sido útil esta solución?