En Java, tengo una cadena:
Jamaica
Me gustaría eliminar el primer carácter de la cadena y luego regresar amaica
¿Cómo haría esto?
En Java, tengo una cadena:
Jamaica
Me gustaría eliminar el primer carácter de la cadena y luego regresar amaica
¿Cómo haría esto?
Respuestas:
Use la substring()
función con un argumento de 1
para obtener la subcadena desde la posición 1 ( después del primer carácter) hasta el final de la cadena (dejando el segundo argumento por defecto en toda la longitud de la cadena).
"Jamaica".substring(1);
public String removeFirstChar(String s){
return s.substring(1);
}
removeFirst()
.
Use substring()
y proporcione el número de caracteres que desea recortar desde el frente.
String value = "Jamaica";
value = value.substring(1);
Respuesta: "amaica"
Use el operador ternario de Java para verificar 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 cadena 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
String a = "Cool";
a = a.replace("o","");
//variable 'a' contains the string "Cl"
String b = "Cool";
b = b.replaceFirst("o","");
//variable 'b' contains the string "Col"
header = header.substring(header.startsWith("#") ? 1 : 0);
header = header.replaceFirst("^#","");
Puede usar el método de subcadena de la String
clase que toma solo 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);
public String removeFirst(String input)
{
return input.substring(1);
}
La clave para entender en Java es que las cadenas son inmutables, no puede cambiarlas. Por lo tanto, no tiene sentido hablar de 'eliminar un personaje de una cadena'. En su lugar, crea una NUEVA cadena con solo los caracteres que desea. Las otras publicaciones en esta pregunta le brindan una variedad de formas de hacerlo, pero es importante comprender que no cambian la cadena original de ninguna manera. Cualquier referencia que tenga a la cadena anterior continuará refiriéndose a la cadena anterior (a menos que las cambie para referirse a una cadena diferente) y no se verá afectada por la cadena recién creada.
Esto tiene una serie de implicaciones para el rendimiento. Cada vez que está 'modificando' una cadena, en realidad está creando una nueva cadena con toda la sobrecarga implícita (asignación de memoria y recolección de basura). Entonces, si desea realizar una serie de modificaciones en una cadena y solo se preocupa 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.
El método substring () devuelve una nueva cadena que contiene una subsecuencia de caracteres actualmente contenidos en esta secuencia.
La subcadena comienza en el especificado start
y se extiende al carácter en index end - 1
.
Tiene dos formas. El primero es
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 de invocación.
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 desde el índice inicial, hasta el índice final, pero sin incluirlo.
String str="Amiyo";
// prints substring from index 3
System.out.println("substring is = " + str.substring(3)); // Output "yo'
Encontré una situación en la que tenía que eliminar no solo el primer personaje (si era un #
, sino el primer conjunto de personajes).
String myString = ###Hello World
podría ser el punto de partida, pero solo me gustaría mantener el 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 funciona también.
Otra solución, puede resolver su problema usando replaceAll
algunas expresiones regulares ^.{1}
( demostración de expresiones regulares ), por ejemplo:
String str = "Jamaica";
int nbr = 1;
str = str.replaceAll("^.{" + nbr + "}", "");//Output = amaica
Mi versión de eliminar caracteres principales, uno o múltiples. 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: "". Dicha funcionalidad suele ser útil al convertir cadenas numéricas en números. La ventaja de esta solución en comparación con regex (replaceAll (...)) es que esta es mucho más rápida. Esto es importante al procesar 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);
}