Java: eliminación del primer carácter de una cadena

En Java, tengo una cadena:

Jamaica 

Me gustaría eliminar el primer caracter de la cadena y luego regresar amaica

¿Cómo haría esto?

Utilice la función substring() con un argumento de 1 para obtener la subcadena de la posición 1 ( después del primer carácter) hasta el final de la cadena (dejando el segundo argumento predeterminado para la longitud completa de la cadena).

 "Jamaica".substring(1); 
 public String removeFirstChar(String s){ return s.substring(1); } 

Use la substring() y proporcione la cantidad de caracteres que desea recortar desde el frente.

 String value = "Jamaica"; value = value.substring(1); 

Respuesta: “amaica”

En Java, elimina el personaje principal solo si se trata de un personaje determinado

Utilice el operador ternario de Java para comprobar rápidamente si su personaje está allí antes de eliminarlo. Esto elimina el carácter principal solo si existe, si pasa una cadena en blanco, devuelve la línea en blanco.

 String header = ""; header = header.startsWith("#") ? header.substring(1) : header; System.out.println(header); header = "foobar"; header = header.startsWith("#") ? header.substring(1) : header; System.out.println(header); header = "#moobar"; header = header.startsWith("#") ? header.substring(1) : header; System.out.println(header); 

Huellas dactilares:

 blankstring foobar moobar 

Java, elimine todas las instancias de un personaje en cualquier lugar de una cadena:

 String a = "Cool"; a = a.replace("o",""); //variable 'a' contains the string "Cl" 

Java, elimina la primera instancia de un personaje en cualquier lugar de una cadena:

 String b = "Cool"; b = b.replaceFirst("o",""); //variable 'b' contains the string "Col" 

Puede utilizar el método de subcadena de la clase String que solo toma el índice inicial y devuelve la subcadena que comienza con el carácter en el índice especificado y se extiende hasta el final de la cadena.

 String str = "Jamaica"; str = str.substring(1); 

La clave para entender en Java es que las cadenas son inmutables, no puedes cambiarlas. Entonces no tiene sentido hablar de “eliminar un personaje de una cuerda”. En cambio, haces una NUEVA cadena con solo los caracteres que deseas. Las otras publicaciones en esta pregunta le brindan una variedad de formas de hacerlo, pero es importante comprender que estas no cambian la cadena original de ninguna manera. Las referencias que tenga a la cadena anterior continuarán refiriéndose a la cadena anterior (a menos que las cambie para referirse a una cadena diferente) y no se verán afectadas por la cadena recién creada.

Esto tiene una serie de implicaciones para el rendimiento. Cada vez que ‘modifica’ una cadena, en realidad está creando una nueva cadena con toda la sobrecarga implícita (asignación de memoria y recolección de basura). Por lo tanto, si desea realizar una serie de modificaciones a una cadena y preocuparse solo por el resultado final (las cadenas intermedias estarán muertas tan pronto como las ‘modifique’), puede tener más sentido usar un StringBuilder o StringBuffer en su lugar.

 public String removeFirst(String input) { return input.substring(1); } 

puedes hacer esto:

 String str="Jamaica"; str=str.substring(1, title.length()); return str; 

o en general:

 public String removeFirstChar(String str){ return str.substring(1, title.length()); } 

El método substring () devuelve un nuevo String que contiene una subsecuencia de caracteres actualmente contenidos en esta secuencia.

La subcadena comienza en el start especificado y se extiende al personaje en el index end - 1 .

Tiene dos formas. El primero es

  1. String substring(int FirstIndex)

Aquí, FirstIndex especifica el índice en el que comenzará la subcadena. Este formulario devuelve una copia de la subcadena que comienza en FirstIndex y se ejecuta hasta el final de la cadena invocadora.

  1. String substring(int FirstIndex, int endIndex)

Aquí, FirstIndex especifica el índice inicial y endIndex especifica el punto de detención. La cadena devuelta contiene todos los caracteres del índice inicial, hasta, pero sin incluir, el índice final.

Ejemplo

  String str="Amiyo"; // prints substring from index 3 System.out.println("substring is = " + str.substring(3)); // Output "yo' 

Me encontré con una situación en la que tuve que eliminar no solo el primer carácter (si era un # , sino el primer conjunto de caracteres).

String myString = ###Hello World podría ser el punto de partida, pero solo querría mantener Hello World . esto podría hacerse de la siguiente manera.

 while (myString.charAt(0) == '#') { // Remove all the # chars in front of the real string myString = myString.substring(1, myString.length()); } 

Para el caso de OP, reemplace while con if y también funciona.

Otra solución, puede resolver su problema utilizando replaceAll con algunos regex ^.{1} ( demo regex ) por ejemplo:

 String str = "Jamaica"; int nbr = 1; str = str.replaceAll("^.{" + nbr + "}", "");//Output = amaica 

Mi versión de eliminar los caracteres principales, uno o varios. Por ejemplo, String str1 = “01234”, al eliminar el “0” inicial, el resultado será “1234”. Para un String str2 = “000123” el resultado será nuevamente “123”. Y para String str3 = “000”, el resultado será una cadena vacía: “”. Tal funcionalidad es a menudo útil al convertir cadenas numéricas en números. La ventaja de esta solución en comparación con la expresión regular (replaceAll (…)) es que esta es mucho más rápida. Esto es importante cuando se procesa una gran cantidad de cadenas.

  public static String removeLeadingChar(String str, char ch) { int idx = 0; while ((idx < str.length()) && (str.charAt(idx) == ch)) idx++; return str.substring(idx); }