在轉換C#應用程序到Java的過程中,我遇到了使用字符串的TrimEnd
方法。有沒有一個等效的Java實現?我似乎無法找到一個。TrimEnd for Java?
我寧可不用trim
代替它,因爲我不想在這一點上改變程序的含義或操作,除非必須。
在轉換C#應用程序到Java的過程中,我遇到了使用字符串的TrimEnd
方法。有沒有一個等效的Java實現?我似乎無法找到一個。TrimEnd for Java?
我寧可不用trim
代替它,因爲我不想在這一點上改變程序的含義或操作,除非必須。
沒有直接等價的,但是如果你想要去除尾隨空白,你可以使用:
"string".replaceAll("\\s+$", "");
\s
的正則表達式字符集「空白」,如果你只關心剝離尾部的空格,你可以用空格字符替換它。如果你想使用的trimEnd()的更一般的形式,那就是刪除尾隨的任意字符集,那麼你需要稍微修改它的使用方法:
"string".replaceAll("[" + characters + "]+$", "");
請注意,第一個參數是一個通用的正則表達式,所以如果你的characters
之一是]
那麼這就需要你的列表中的第一個字符。有關java正則表達式模式的完整描述,請看the javadoc。
如果你需要實現從.NET的trimstart()方法,它幾乎是相同的,但應該是這樣的:
"string".replaceAll("^[" + characters + "]+", "");
這裏有一個竅門,從做: http://www.overclock.net/coding-programming/320937-simple-java-trim-help.html
str = str.replaceAll(" +$", "");
注意這個修剪尾隨空格。 @Paul Wagland的變體修剪尾隨空白字符。 C#方法使用「trimChars」數組。 – 2010-01-27 00:47:47
這是真的,保羅+1。 – 2010-01-27 00:54:02
沒有直接替換。你可以使用regexps,或者Commons Lang StringUtils.stripEnd()
的方法。
對於StringUtils爲+1。除了trimXXX,他們還提供stripXXX,它能夠正確處理Unicode空格(僅修剪/還修剪ASCII控制代碼)。 – Thilo 2010-01-27 01:37:53
沒有本地等價的。使用此:
public static String trimEnd(String s, String suffix) {
if (s.endsWith(suffix)) {
return s.substring(0, s.length() - suffix.length());
}
return s;
}
你應該檢查一個循環。後綴可能是兩次或更多。 – xmen 2015-06-02 08:33:11
如果值的性能(可能是在一個循環超過數千串用你的方法),比你可以使用此方法:
public String trimEnd(String value) {
int len = value.length();
int st = 0;
while ((st < len) && value.charAt(len - 1) == ' ') {
len--;
}
return value.substring(0, len);
}
如果您還有選項卡和其他空格,請用''Character.isWhitespace(...)']替換'... =='''(http://docs.oracle.com/javase/7/docs/ API /爪哇/郎/ Character.html#isWhitespace%28char%29)。 – 2017-02-09 15:42:24
如果性能並不重要單襯墊可以使用:
("X" + str).trim().substring(1)
我喜歡從番石榴的谷歌版本。
import static com.google.common.base.CharMatcher.WHITESPACE;
WHITESPACE.trimTrailingFrom(value);
或
CharMatcher.anyOf(suffix).trimTrailingFrom(value);
,如果你使用Maven,你可以把它添加到簡單的pom.xml的你的依賴部分。
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.0</version>
</dependency>
@finnw:你是對的......正則表達式需要被錨定。感謝您爲我提供的信息,我已經更新了答案,以便輸入正確的正則表達式。 – 2010-01-27 12:59:08
對不起,花了我很長的時間纔回到這裏。謝謝你的偉大答案!我只需要做一點小小的修改。 ''\ s + $''需要額外的'''來正確地轉義它。 – jasonh 2010-03-14 00:42:12
@jasonh:你說的沒錯,我已經更新了答案,謝謝。 – 2010-03-16 10:16:27