Trim leading or trailing characters from a string?

后端 未结 6 1568
鱼传尺愫
鱼传尺愫 2020-11-27 21:19

How can I trim the leading or trailing characters from a string in java?

For example, the slash character \"/\" - I\'m not interested in spaces, and am looking to t

相关标签:
6条回答
  • 2020-11-27 21:51

    You can use Apache StringUtils.stripStart to trim leading characters, or StringUtils.stripEnd to trim trailing characters.

    For example:

    System.out.println(StringUtils.stripStart("//test/me", "/"));
    

    will output:

    test/me

    Note that if for some reason you can't use the whole StringUtils library, you could just rip out the relevant parts, as detailed here:

    0 讨论(0)
  • 2020-11-27 21:58

    My version of trimming leading and/or trailing String s from String str. Both arguments may be null. When str does not has leading and/or trailing s, it is not changed.

    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;
    }
    
    0 讨论(0)
  • 2020-11-27 22:00

    For those using Spring:

    https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/util/StringUtils.html#trimTrailingCharacter-java.lang.String-char-

    import org.springframework.util.StringUtils;    
    
    public void setFileName(String fileName) {
        // If the extension does not exist trim the trailing period
        this.fileName = StringUtils.trimTrailingCharacter(fileName,'.');
    }
    
    0 讨论(0)
  • 2020-11-27 22:07

    You could use

    Leading:

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

    Trailing:

    System.out.println("//test/me//".replaceAll("/+$", ""));
    
    0 讨论(0)
  • 2020-11-27 22:10

    Trim with Character, String, or Regex

    If run-time is not a big issue for you, then this code will prove really helpful.

    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
        }
    }
    
    0 讨论(0)
  • 2020-11-27 22:11

    You could use a simple iteration if you want to remove the leading characters from a string :

    String removeLeadingChar(String s, char c) {
        int i;
        for(i = 0; i < s.length() && s.charAt(i) == c; ++i);
        return s.substring(i);
    }
    

    same logic applies if you want to remove any trailing char.

    0 讨论(0)
提交回复
热议问题