在将C#应用程序转换为Java的过程中,我遇到了使用String的TrimEnd
方法。是否有等效的Java实现?我似乎无法找到一个。
我宁愿不用trim
替换它,因为我不想在此时改变程序的含义或操作,除非我必须这样做。
答案 0 :(得分:28)
没有直接的等效项,但是如果要删除尾随空格,可以使用:
"string".replaceAll("\\s+$", "");
\s
是正则表达式字符集“whitespace”,如果您只关心去除尾随空格,可以用空格字符替换它。如果你想使用更一般的trimEnd()形式,即删除任意一组尾随字符,那么你需要稍微修改它以使用:
"string".replaceAll("[" + characters + "]+$", "");
请注意,第一个参数是通用正则表达式,因此,如果您的characters
之一是]
,那么这需要是列表中的第一个字符。有关java正则表达式模式的完整描述,请查看the javadoc。
如果你需要从.net实现trimstart()方法,它几乎是一样的,但看起来像这样:
"string".replaceAll("^[" + characters + "]+", "");
答案 1 :(得分:10)
没有直接替代品。您可以使用regexp,或者Commons Lang StringUtils.stripEnd()
方法。
答案 2 :(得分:5)
如果你重视性能(也许你的方法用在数千个字符串的循环中),那么你可以使用这个方法:
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);
}
答案 3 :(得分:2)
这是一个诀窍: http://www.overclock.net/coding-programming/320937-simple-java-trim-help.html
str = str.replaceAll(" +$", "");
答案 4 :(得分:2)
没有原生等价物。使用此:
public static String trimEnd( String s, String suffix) {
if (s.endsWith(suffix)) {
return s.substring(0, s.length() - suffix.length());
}
return s;
}
答案 5 :(得分:1)
好消息!
它是在Java 11中添加的。
[JDK-8200378] String::strip, String::stripLeading, String::stripTrailing - Java Bug System
strip()
stripLeading()
stripTrailing()
答案 6 :(得分:0)
如果表现不重要,可以使用单线:
("X" + str).trim().substring(1)
答案 7 :(得分:0)
我喜欢番石榴的googles版本。
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>