una ultimo repetidos quitar primer obtener especiales eliminar caracteres caracter cadena java string

repetidos - obtener el ultimo caracter de una cadena java



¿Cómo eliminar el último carácter de una cadena? (24)

¿Por qué no solo un forro?

private static String removeLastChar(String str) { return str.substring(0, str.length() - 1); }

Código Completo

import java.util.*; import java.lang.*; public class Main { public static void main (String[] args) throws java.lang.Exception { String s1 = "Remove Last CharacterY"; String s2 = "Remove Last Character2"; System.out.println("After removing s1==" + removeLastChar(s1) + "=="); System.out.println("After removing s2==" + removeLastChar(s2) + "=="); } private static String removeLastChar(String str) { return str.substring(0, str.length() - 1); } }

Demo

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; } }

Obtener la longitud de la cadena - 1 y reemplazar la última letra por nada (eliminarla), pero cada vez que ejecuto el programa, se eliminan las letras intermedias que son iguales a la última letra.

Por ejemplo, la palabra es "admirador"; Después de ejecutar el método, obtengo "Admie". Quiero que te devuelva la palabra admirar.


¿Por qué no usar la secuencia de escape ...!

System.out.println(str + ''/b'');

La vida es mucho más fácil ahora. XD! ~ Una sola línea legible


Aquí hay una respuesta que funciona con puntos de código fuera del plano multilingüe básico (Java 8+).

Utilizando streams:

public String method(String str) { return str.codePoints() .limit(str.codePoints().count() - 1) .mapToObj(i->new String(Character.toChars(i))) .collect(Collectors.joining()); }

Tal vez más eficiente:

public String method(String str) { return str.isEmpty()? "": str.substring(0, str.length() - Character.charCount(str.codePointBefore(str.length()))); }


Cómo hacer el char en la recursión al final:

public static String removeChar(String word, char charToRemove) { String char_toremove=Character.toString(charToRemove); for(int i = 0; i < word.length(); i++) { if(word.charAt(i) == charToRemove) { String newWord = word.substring(0, i) + word.substring(i + 1); return removeChar(newWord,charToRemove); } } System.out.println(word); return word; }

por ejemplo:

removeChar ("hello world, let''s go!",''l'') → "heo word, et''s go!llll" removeChar("you should not go",''o'') → "yu shuld nt goooo"


El problema descrito y las soluciones propuestas a veces se relacionan con la eliminación de separadores. Si este es su caso, entonces eche un vistazo a Apache Commons StringUtils, tiene un método llamado removeEnd que es muy elegante.

Ejemplo:

StringUtils.removeEnd("string 1|string 2|string 3|", "|");

Resultaría en: "cadena 1 | cadena 2 | cadena 3"


En lo que respecta a la legibilidad, considero que este es el más conciso

StringUtils.substring("string", 0, -1);

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.


Esta es la única forma de eliminar el último carácter de la cadena:

Scanner in = new Scanner(System.in); String s = in.nextLine(); char array[] = s.toCharArray(); int l = array.length; for (int i = 0; i < l-1; i++) { System.out.print(array[i]); }


Java 8

import java.util.Optional; public class Test { public static void main(String[] args) throws InterruptedException { System.out.println(removeLastChar("test-abc")); } public static String removeLastChar(String s) { return Optional.ofNullable(s) .filter(str -> str.length() != 0) .map(str -> str.substring(0, str.length() - 1)) .orElse(s); } }

Salida: test-ab


Mira a la clase StringBuilder:

StringBuilder sb=new StringBuilder("toto,"); System.out.println(sb.deleteCharAt(sb.length()-1));//display "toto"



Podemos utilizar subcadenas. Aquí está el ejemplo,

public class RemoveStringChar { public static void main(String[] args) { String strGiven = "Java"; System.out.println("Before removing string character - " + strGiven); System.out.println("After removing string character - " + removeCharacter(strGiven, 3)); } public static String removeCharacter(String strRemove, int position) { return strRemove.substring(0, position) + strRemove.substring(position + 1); } }


Tuve que escribir código para un problema similar. Una forma en que pude resolverlo fue mediante un método recursivo de codificación.

static String removeChar(String word, char charToRemove) { for(int i = 0; i < word.lenght(); i++) { if(word.charAt(i) == charToRemove) { String newWord = word.substring(0, i) + word.substring(i + 1); return removeChar(newWord, charToRemove); } } return word; }

La mayoría 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.


Una respuesta de una sola línea (solo una alternativa divertida , no intentes esto en casa, y ya hay respuestas geniales):

public String removeLastChar(String s){return (s != null && s.length() != 0) ? s.substring(0, s.length() - 1): s;}


Utilizar esta:

if(string.endsWith("x")) { string= string.substring(0, string.length() - 1); }


Ya que estamos en un tema, uno puede usar expresiones regulares también

"aaabcd".replaceFirst(".$",""); //=> aaabc


elimina la última aparición del ''xxx'':

System.out.println("aaa xxx aaa xxx ".replaceAll("xxx([^xxx]*)$", "$1"));

elimina la última aparición de ''xxx'' si es la última:

System.out.println("aaa xxx aaa ".replaceAll("xxx//s*$", ""));

puede reemplazar el ''xxx'' en lo que quiera pero tenga cuidado con los caracteres especiales


si tienes caracter especial como; en json solo use String.replace (";", "") de lo contrario, debe volver a escribir todos los caracteres en la cadena menos el último.


replace reemplazará todas las instancias de una letra. Todo lo que necesitas hacer es usar substring() :

public String method(String str) { if (str != null && str.length() > 0 && str.charAt(str.length() - 1) == ''x'') { str = str.substring(0, str.length() - 1); } return str; }


"String name" = "String name".substring(0, ("String name".length() - 1));

Estoy usando esto en mi código, es fácil y simple. solo funciona mientras el String es> 0. Lo tengo conectado a un botón y dentro de la siguiente instrucción if

if ("String name".length() > 0) { "String name" = "String name".substring(0, ("String name".length() - 1)); }


// creating StringBuilder StringBuilder builder = new StringBuilder(requestString); // removing last character from String builder.deleteCharAt(requestString.length() - 1);


// Remove n last characters // System.out.println(removeLast("Hello!!!333",3)); public String removeLast(String mes, int n) { return mes != null && !mes.isEmpty() && mes.length()>n ? mes.substring(0, mes.length()-n): mes; } // Leave substring before character/string // System.out.println(leaveBeforeChar("Hello!!!123", "1")); public String leaveBeforeChar(String mes, String last) { return mes != null && !mes.isEmpty() && mes.lastIndexOf(last)!=-1 ? mes.substring(0, mes.lastIndexOf(last)): mes; }


if (str.endsWith("x")) { return str.substring(0, str.length() - 1); } return str;

Por ejemplo, la palabra es "admirador"; Después de ejecutar el método, obtengo "Admie". Quiero que te devuelva la palabra admirar.

En caso de que estés tratando de stem las palabras en inglés

La derivación es el proceso para reducir las palabras con inflexión (o algunas veces derivadas) a su forma de raíz, base o raíz, generalmente una forma de palabra escrita.

...

Un stemmer para inglés, por ejemplo, debe identificar la cadena "cats" (y posiblemente "catlike", "catty", etc.) basándose en la raíz "cat", y "stemmer", "stemming", "stemmed" as basado en "tallo". Un algoritmo de derivación reduce las palabras "pesca", "pesca", "pescado" y "pescador" a la palabra raíz, "pescado".

Diferencia entre los generadores de Lucene: EnglishStemmer, PorterStemmer, LovinsStemmer describe algunas opciones de Java.


public String removeLastChar(String s) { if (!Util.isEmpty(s)) { s = s.substring(0, s.length()-1); } return s; }


public String removeLastChar(String s) { if (s == null || s.length() == 0) { return s; } return s.substring(0, s.length()-1); }