Java - Обрезать начальные или конечные символы из строки?

java trim

65905 просмотра

6 ответа

Как я могу обрезать начальные или конечные символы из строки в Java?

Например, косая черта "/" - я не интересуюсь пробелами и ищу обрезку начальных или конечных символов в разное время.

Автор: Brad Parks Источник Размещён: 12.11.2019 09:26

Ответы (6)


73 плюса

Решение

Вы могли бы использовать

Ведущий:

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

Скользящий:

System.out.println("//test/me//".replaceAll("/+$", ""));
Автор: Reimeus Размещён: 05.09.2014 06:08

31 плюса

Вы можете использовать Apache StringUtils.stripStart для обрезки начальных символов или StringUtils.stripEnd для обрезки конечных символов.

Например:

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

будет выводить:

Проверь меня

Обратите внимание, что если по какой-то причине вы не можете использовать всю библиотеку StringUtils, вы можете просто удалить соответствующие части, как подробно описано здесь :

Автор: Brad Parks Размещён: 05.09.2014 05:54

2 плюса

Вы можете использовать простую итерацию, если хотите удалить начальные символы из строки:

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

та же логика применяется, если вы хотите удалить любой трейлинг char.

Автор: Oleg Размещён: 02.12.2017 01:39

2 плюса

Обрезать символом, строкой или регулярным выражением

Если время выполнения не является для вас большой проблемой, тогда этот код окажется действительно полезным.

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
    }
}
Автор: Minhas Kamal Размещён: 04.01.2018 12:04

1 плюс

Моя версия обрезки ведущих и / или конечных строк String от String str. Оба аргумента могут быть нулевыми. Когда 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;
}
Автор: Andrushenko Alexander Размещён: 15.11.2017 02:43

1 плюс

Для тех, кто использует 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,'.');
}
Автор: Gabriel Gates Размещён: 30.07.2018 08:19
Вопросы из категории :
32x32