studio ltrim left java string trim

java - ltrim - trim en android studio



¿Cuál es una buena alternativa de LTRIM y RTRIM en Java? (5)

Basándome en la respuesta de @bezmax, eché un vistazo a Spring StringUtils , pero no podía justificar la sobrecarga de cambiar al framework de Spring. Por lo tanto, decidí crear una clase de Characters para cadenas de recorte fácilmente izquierda / derecha para cualquier personaje dado (-class). La clase está disponible en GitHub .

Characters.valueOf(''x'').trim( ... ) Characters.valueOf(''x'').leftTrim( ... ) Characters.valueOf(''x'').rightTrim( ... )

Si desea recortar para espacios en blanco, hay una clase de caracteres predefinida disponible:

Characters.WHITESPACE.trim( ... ) Characters.WHITESPACE.leftTrim( ... ) Characters.WHITESPACE.rightTrim( ... )

La clase también presenta otros tipos de operaciones de caracteres, tales como condense , replace o split .

¿Cuál es una buena alternativa de las ltrim() JavaScript ltrim() y rtrim() en Java?


Con una expresión regular, podrías escribir:

String s = ... String ltrim = s.replaceAll("^//s+",""); String rtrim = s.replaceAll("//s+$","");

Si tiene que hacerlo a menudo, puede crear y compilar un patrón para un mejor rendimiento:

private final static Pattern LTRIM = Pattern.compile("^//s+"); public static String ltrim(String s) { return LTRIM.matcher(s).replaceAll(""); }

Desde una perspectiva de rendimiento, un micro-benchmark rápido muestra (después de la compilación JIT) que el enfoque regex es aproximadamente 5 veces más lento que el ciclo (0.49s vs. 0.11s para 1 millón de ltrim).

Personalmente encuentro que el enfoque de expresiones regulares es más legible y menos propenso a errores, pero si el rendimiento es un problema, debe usar la solución de bucle.


La guayaba tiene CharMatcher trimLeadingFrom y trimTrailingFrom

por ejemplo, CharMatcher.whitespace.trimTrailingFrom(s)


Usar regex puede ser bueno, pero es bastante más lento que las simples funciones de recorte:

public static String ltrim(String s) { int i = 0; while (i < s.length() && Character.isWhitespace(s.charAt(i))) { i++; } return s.substring(i); } public static String rtrim(String s) { int i = s.length()-1; while (i >= 0 && Character.isWhitespace(s.charAt(i))) { i--; } return s.substring(0,i+1); }

Fuente: http://www.fromdev.com/2009/07/playing-with-java-string-trim-basics.html

Además, hay algunas bibliotecas que ofrecen tales funciones. Por ejemplo, Spring StringUtils . Apache Commons StringUtils también ofrece funciones similares: strip, stripStart, stripEnd

StringUtils.stripEnd("abc ", null) = "abc"


import org.apache.commons.lang3.StringUtils; private String rTrim(String str) { return StringUtils.stripEnd(str, /*stripChars*/" "); } private String lTrim(String str) { return StringUtils.stripStart(str, /*stripChars*/" "); }