Quiero eliminar el último carácter de una cadena. He intentado hacer esto:
public String method(String str) {
if (str.charAt(str.length()-1)=='x'){
str = str.replace(str.substring(str.length()-1), "");
return str;
} else{
return str;
}
}
Obteniendo la longitud de la cadena - 1 y reemplazando la última letra con nada (eliminándola), pero cada vez que ejecuto el programa, elimina las letras del medio que son las mismas que la última letra.
Por ejemplo, la palabra es "admirador"; después de ejecutar el método, obtengo "admirar". Quiero que me devuelva la palabra admirar.
null != str &&
al comienzo del cheque.str != null &&
!if (str = NULL)
lo que no solo se evaluará como falso (NULL == 0 == false) sino que también asignará un valorstr
que probablemente no sea lo que deseaba hacer.if (NULL = str)
Sin embargo, no pudo escribir porque NULL no es una variable y no se le puede asignar. Por lo tanto, es una convención más segura colocar el NULL a la izquierda. Sin embargo, esto no es un problema en Java.¿Por qué no solo un revestimiento?
Código completo
Manifestación
fuente
return str.substring(0,str.length()-1);
como mejoraComo estamos en un tema, también se pueden usar expresiones regulares
fuente
El problema descrito y las soluciones propuestas a veces se relacionan con la eliminación de separadores. Si este es su caso, eche un vistazo a Apache Commons StringUtils, tiene un método llamado removeEnd que es muy elegante.
Ejemplo:
Resultaría en: "cadena 1 | cadena 2 | cadena 3"
fuente
fuente
No intente reinventar la rueda, mientras que otros ya han escrito bibliotecas para realizar la manipulación de cadenas:
org.apache.commons.lang3.StringUtils.chop()
fuente
Utilizar este:
fuente
En caso de que estés tratando de detener las palabras en inglés
Diferencia entre los stemmers de Lucene: EnglishStemmer, PorterStemmer, LovinsStemmer describe algunas opciones de Java.
fuente
En Kotlin puedes usar el método dropLast () de la clase string. Caerá el número dado de la cadena, devolverá una nueva cadena
fuente
En lo que respecta a la legibilidad, considero que esto es lo más conciso
Los índices negativos se pueden usar en la utilidad StringUtils de Apache. Todos los números negativos se tratan desde el desplazamiento desde el final de la cadena.
fuente
elimina la última aparición de 'xxx':
elimina la última aparición de 'xxx' si es la última:
puedes reemplazar el 'xxx' en lo que quieras pero ten cuidado con los caracteres especiales
fuente
fuente
fuente
Mire a la clase StringBuilder:
fuente
fuente
Una respuesta de una sola línea (solo una alternativa divertida , no intente esto en casa, y ya hay excelentes respuestas):
fuente
¿Por qué no usar la secuencia de escape ...!
La vida es mucho más fácil ahora. XD! ~ Una línea legible
fuente
La mayoría de las respuestas aquí se olvidaron de los pares sustitutos .
Por ejemplo, el carácter 𝕫 (punto de código U + 1D56B) no cabe en un solo
char
, por lo que para ser representado, debe formar un par sustituto de dos caracteres.Si uno simplemente aplica la respuesta actualmente aceptada (usando
str.substring(0, str.length() - 1)
, uno divide el par sustituto, lo que lleva a resultados inesperados.También se debe incluir una verificación de si el último personaje es un par sustituto:
fuente
IndexOutOfBoundsException
? (por ejemplo, es posible que Character.isSurrogate devuelva verdadero cuando en realidad no hay caracteres anteriores, lo que hacestr.length()-cut
negativo).2
porMath.min(2, str.length())
.Java 8
Salida: test-ab
fuente
Estoy usando esto en mi código, es fácil y simple. solo funciona mientras la Cadena es> 0. Lo tengo conectado a un botón y dentro de la siguiente instrucción if
fuente
fuente
si tienes un carácter especial como; en json solo use String.replace (";", "") de lo contrario debe reescribir todos los caracteres en cadena menos el último.
fuente
Cómo hacer el char en la recursión al final:
por ejemplo:
fuente
Aquí hay una respuesta que funciona con puntos de código fuera del plano multilingüe básico (Java 8+).
Usando transmisiones:
Más eficiente quizás:
fuente
Podemos usar subcadenas. Aquí está el ejemplo,
fuente
simplemente reemplace la condición de "si" de esta manera:
esto hará el truco por ti.
fuente
Supongamos que la longitud total de mi cadena = 24 Quiero cortar el último carácter después de la posición 14 para terminar, lo que significa que quiero que comience el 14 para estar allí. Entonces aplico la siguiente solución.
fuente
Tuve que escribir código para un problema similar. Una forma en que pude resolverlo fue mediante un método recursivo de codificación.
La mayor parte del código que he visto sobre este tema no usa la recursión, así que espero poder ayudarlo a usted oa alguien que tenga el mismo problema.
fuente
Pan comido:
fuente
Esta es la única forma de eliminar el último carácter de la cadena:
fuente