从字符串中删除前导或尾随字符?

67

如何在Java中去除字符串的前导或尾随字符?

例如,斜杠字符 "/" - 我不关心空格,并且希望在不同的时候修剪前导或尾随字符。

6个回答

107
你可以使用

Leading:

System.out.println("//test/me".replaceAll("^/+", ""));

尾随:

System.out.println("//test/me//".replaceAll("/+$", ""));

5
看起来很有效...你可以在这里在线测试它(http://ideone.com/shHHV9)。 - Brad Parks
1
@SayanSil 解决方案是使用正则表达式语法。^ / + 仅选择字符串开头的斜杠。 - hayfreed
1
第一个可以替换为 System.out.println("//test/me".replaceFirst("^/+", ""));。这样更有效率,因为它不会尝试寻找任何其他匹配项。 - John Gilmer

44
您可以使用 Apache StringUtils.stripStart 去除前导字符,或者使用 StringUtils.stripEnd 去除尾随字符。
例如:
System.out.println(StringUtils.stripStart("//test/me", "/"));

将输出:

test/me

请注意,如果由于某种原因您无法使用整个StringUtils库,您可以仅剥离相关部分,如此处所述


6

使用字符、字符串或正则表达式进行修剪

如果运行时间不是太大的问题,那么这段代码将非常有帮助。

public class StringTrimmer {
    public static String trim(String string, char ch){
        return trim(string, ch, ch);
    }

    public static String trim(String string, char leadingChar, char trailingChar){
        return string.replaceAll("^["+leadingChar+"]+|["+trailingChar+"]+$", "");
    }

    public static String trim(String string, String regex){
        return trim(string, regex, regex);
    }

    public static String trim(String string, String leadingRegex, String trailingRegex){
        return string.replaceAll("^("+leadingRegex+")+|("+trailingRegex+")+$", "");
    }

    // test
    public static void main(String[] args) {
        System.out.println(trim("110100", '1', '0')); // outputs: 01
        System.out.println(trim("**Aa0*#**", '*')); // outputs: Aa0*#
        System.out.println(trim("123##22222", "12", "22")); // outputs: 3##2
        System.out.println(trim("101101##10101", "101")); // outputs: ##10
        System.out.println(trim("123##abcde", "\\d", "[c-e]")); // outputs: ##ab
    }
}

5
您可以使用简单的迭代来从字符串中删除前导字符:
String removeLeadingChar(String s, char c) {
    int i;
    for(i = 0; i < s.length() && s.charAt(i) == c; ++i);
    return s.substring(i);
}

如果您想删除任何尾随的字符,则相同的逻辑适用。

5

1

这是我修改后的从字符串 str 中删除前导和/或尾随字符串 s 的函数。两个参数都可以为空。当 str 没有前导和/或尾随的 s 时,它不会被改变。

String trim(String str, String s) {
    String res = s == null ? str : str == null ? null : s.length() >= str.length() ? str : str.replaceFirst(s, "");
    if ((res != null) && (s != null) && (res.length() >= s.length())) {
        return res.substring(res.length() - s.length(), res.length()).equals(s) ? res.substring(0, res.length() - s.length()) : res;
    }
    return res;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接