Javaの JavaScriptltrim()
とrtrim()
関数の良い代替手段は何ですか?
73149 次
7 に答える
62
正規表現を使用すると、次のように記述できます。
String s = ...
String ltrim = s.replaceAll("^\\s+","");
String rtrim = s.replaceAll("\\s+$","");
頻繁に行う必要がある場合は、パフォーマンスを向上させるためにパターンを作成してコンパイルできます。
private final static Pattern LTRIM = Pattern.compile("^\\s+");
public static String ltrim(String s) {
return LTRIM.matcher(s).replaceAll("");
}
パフォーマンスの観点から、簡単なマイクロ ベンチマーク (JIT コンパイル後) は、正規表現アプローチがループよりも約 5 倍遅いことを示しています (100 万 ltrim で 0.49 秒対 0.11 秒)。
個人的には、正規表現のアプローチの方が読みやすく、エラーが発生しにくいと思いますが、パフォーマンスが問題になる場合は、ループ ソリューションを使用する必要があります。
于 2013-03-22T09:40:28.920 に答える
34
正規表現を使用するのは良いことかもしれませんが、単純なトリミング機能よりもかなり遅くなります。
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);
}
ソース: http: //www.fromdev.com/2009/07/playing-with-java-string-trim-basics.html
また、そのような機能を提供するいくつかのライブラリがあります。たとえば、SpringStringUtils。Apache Commons StringUtilsも同様の機能を提供します:strip、stripStart、stripEnd
StringUtils.stripEnd("abc ", null) = "abc"
于 2013-03-22T09:47:39.877 に答える
10
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*/" ");
}
于 2016-06-22T20:55:54.250 に答える