una texto quitar principio los espacios espacio elimine eliminar dobles contar cadena blanco array agregar java android string trim

texto - ¿Cómo eliminar solo los espacios finales de una cadena en Java y mantener los espacios iniciales?



quitar espacios en blanco de un string (9)

Aquí hay una versión muy corta, eficiente y fácil de leer:

public static String trimTrailing(String str) { if (str != null) { for (int i = str.length() - 1; i >= 0; --i) { if (str.charAt(i) != '' '') { return str.substring(0, i + 1); } } } return str; }

Como alternativa a str.charAt(i) != '' '' , También puede usar !Character.isWhitespace(str.charAt(i) si desea usar una definición más amplia de espacios en blanco.

La función trim() elimina tanto el espacio inicial como el posterior, sin embargo, si solo quiero eliminar el espacio final de una cadena, ¿cómo puedo hacerlo?

¡Gracias!


Con la expresión regular /s++$ , puede reemplazar todos los caracteres de espacio final (incluye caracteres de espacio y tabulación) sin nada ( "" ).

final String text = " foo "; System.out.println(text.replaceFirst("//s++$", ""));

Salida

foo

Demostración en línea.

Aquí hay un desglose de la expresión regular:

  • /s - cualquier personaje de espacio en blanco,
  • ++ - coincide con uno o más de los tokens anteriores (posesivamente); es decir, una coincidencia de uno o más caracteres en espacio en blanco. El patrón + se usa en su forma posesiva ++ , que demora menos tiempo para detectar el caso cuando el patrón no coincide.
  • $ - el final de la cadena.

Por lo tanto, la expresión regular coincidirá con tantos espacios en blanco como sea posible, seguido directamente por el final de la cadena: en otras palabras, el espacio en blanco final.

La inversión en el aprendizaje de expresiones regulares será más valiosa si necesita ampliar sus requisitos más adelante.

Referencias


Este código está destinado a leerse de la manera más fácil posible utilizando nombres descriptivos (y evitando expresiones regulares).

Utiliza Java 8''s Optional por lo que no es apropiado para todos.

public static String removeTrailingWhitspace(String string) { while (hasWhitespaceLastCharacter(string)) { string = removeLastCharacter(string); } return string; } private static boolean hasWhitespaceLastCharacter(String string) { return getLastCharacter(string) .map(Character::isWhitespace) .orElse(false); } private static Optional<Character> getLastCharacter(String string) { if (string.isEmpty()) { return Optional.empty(); } return Optional.of(string.charAt(string.length() - 1)); } private static String removeLastCharacter(String string) { if (string.isEmpty()) { throw new IllegalArgumentException("String must not be empty"); } return string.substring(0, string.length() - 1); }


La mejor manera en mi opinión:

public static String trimEnd(String source) { int pos = source.length() - 1; while ((pos >= 0) && Character.isWhitespace(source.charAt(pos))) { pos--; } pos++; return (pos < source.length()) ? source.substring(0, pos) : source; }

Esto no asigna ningún objeto temporal para hacer el trabajo y es más rápido que usar una expresión regular. También elimina todos los espacios en blanco, no solo ''''.


La respuesta más práctica es la de @May, la de Ahmad es inversa a lo que querías, pero esto es lo que se me ocurrió en caso de que prefieras no usar herramientas desconocidas o ver un enfoque concreto.

public String trimEnd( String myString ) { for ( int i = myString.length() - 1; i >= 0; --i ) { if ( myString.charAt(i) == '' '' ) { continue; } else { myString = myString.substring( 0, ( i + 1 ) ); break; } } return myString; }

Usado como:

public static void main( String[] args ) { String s = " Some text here "; System.out.println( s + "|" ); s = trimEnd( s ); System.out.println( s + "|" ); }

Salida:

Some text here | Some text here|


Otra opción es utilizar Apache Commons StringUtils , específicamente StringUtils.stripEnd

String stripped = StringUtils.stripEnd(" my lousy string "," ");



Valor de cadena = "Bienvenido a Java";

Entonces podemos usar

value = value.trim ();


java.lang.String.trim() un poco el método original java.lang.String.trim() y debería funcionar:

public String trim(String str) { int len = str.length(); int st = 0; char[] val = str.toCharArray(); while ((st < len) && (val[len - 1] <= '' '')) { len--; } return str.substring(st, len); }

Prueba:

Test test = new Test(); String sample = " Hello World "; // A String with trailing and leading spaces System.out.println(test.trim(sample) + " // No trailing spaces left");

Salida:

Hello World // No trailing spaces left