Java 中JavaScript ltrim()和rtrim()函数的一个很好的替代品是什么?
ass*_*ias 51
使用正则表达式,您可以写:
String s = ...
String ltrim = s.replaceAll("^\\s+","");
String rtrim = s.replaceAll("\\s+$","");
Run Code Online (Sandbox Code Playgroud)
如果您经常这样做,您可以创建并编译模式以获得更好的性能:
private final static Pattern LTRIM = Pattern.compile("^\\s+");
public static String ltrim(String s) {
return LTRIM.matcher(s).replaceAll("");
}
Run Code Online (Sandbox Code Playgroud)
从性能角度来看,快速微观基准显示(在JIT编译之后)正则表达式方法比循环慢约5倍(0.49s与100万ltrim的0.11s).
我个人觉得正则表达式方法更具可读性且不易出错,但如果性能问题,则应使用循环解决方案.
bez*_*max 30
使用正则表达式可能会很好,但它比简单的修剪功能慢得多:
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);
}
Run Code Online (Sandbox Code Playgroud)
资料来源:http://www.fromdev.com/2009/07/playing-with-java-string-trim-basics.html
此外,还有一些提供此类功能的库.例如,Spring StringUtils.Apache Commons StringUtils也提供类似的功能:strip,stripStart,stripEnd
StringUtils.stripEnd("abc ", null) = "abc"
Run Code Online (Sandbox Code Playgroud)
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*/" ");
}
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以简单地尝试以下操作
String s = " Hello world "
String ltrim = s.stripLeading();
String rtrim = s.stripTrailing();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62456 次 |
| 最近记录: |