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*/" ");
}