Удалить определенные символы из строки в Java
В этом посте будет обсуждаться, как удалить определенные символы из строки в Java.
1. Использование String.replaceAll() метод
Стандартное решение для замены каждой подстроки строки, которая соответствует заданному регулярному выражению, использует метод String.replaceAll() метод.
Его можно использовать для удаления определенных символов из строки, как показано ниже. Следующий код заменяет все совпадения регулярного выражения \w с пустой строкой «» . Обратите внимание, что \w это предопределенный класс символов, который обозначает словесный символ [a-zA-Z_0-9] .
Как удалить последний символ строки?
В этом кратком руководстве мы собираемся изучить различные методы удаления последнего символа строки.
2. Использование String.substring()
Самый простой способ — использовать встроенный метод substring() класса String .
Чтобы удалить последний символ данной строки, мы должны использовать два параметра: 0 в качестве начального индекса и индекс предпоследнего символа. Мы можем добиться этого, вызвав метод String length() и вычтя 1 из результата.
Однако этот метод не является нулевым, и если мы используем пустую строку, это не удастся.
Чтобы преодолеть проблемы с нулевыми и пустыми строками, мы можем обернуть метод во вспомогательный класс:
public static String removeLastChar(String s) return (s == null || s.length() == 0) ? null : (s.substring(0, s.length() - 1)); >
Мы можем реорганизовать код и использовать Java 8:
public static String removeLastCharOptional(String s) return Optional.ofNullable(s) .filter(str -> str.length() != 0) .map(str -> str.substring(0, str.length() - 1)) .orElse(s); >
3. Использование StringUtils.substring()
Вместо того, чтобы изобретать велосипед, мы можем использовать класс StringUtils из библиотеки Apache Commons Lang3 , который предлагает полезные операции со строками . Один из них — нулевой безопасный метод substring() , который обрабатывает исключения.
Чтобы включить StringUtils, мы должны обновить наш файл pom.xml :
dependency> groupId>org.apache.commonsgroupId> artifactId>commons-lang3artifactId> version>3.12.0version> dependency>
StringUtils.substring() требует три параметра: данная строка, индекс первого символа (в нашем случае всегда будет 0) и индекс предпоследнего символа. Опять же, мы можем просто использовать метод length() и вычесть 1:
String TEST_STRING = "abcdef"; StringUtils.substring(TEST_STRING, 0, TEST_STRING.length() - 1);
Опять же, эта операция не является нулевой. Это будет нормально работать с пустыми строками .
4. Использование StringUtils.chop()
Класс StringUtils предоставляет метод Chop () , который хорошо работает со всеми пограничными сценариями: пустыми и нулевыми строками .
Он очень прост в использовании и требует только одного параметра: String. Его единственная цель — удалить последний символ, ни больше, ни меньше:
StringUtils.chop(TEST_STRING);
5. Использование регулярных выражений
Мы также можем удалить последний символ (или любое количество символов) из строки , хорошо используя регулярные выражения.
Например, мы можем использовать метод replaceAll() самого класса String , который принимает два параметра: регулярное выражение и замещающую строку :
TEST_STRING.replaceAll(".$", "");
Обратите внимание: поскольку мы вызываем метод для String, операция не является нулевой .
Кроме того, replaceAll() и выражения регулярных выражений могут показаться сложными на первый взгляд. Подробнее о регулярном выражении можно прочитать здесь , но чтобы сделать логику более удобной для пользователя, мы можем обернуть ее во вспомогательный класс:
public static String removeLastCharRegex(String s) return (s == null) ? null : s.replaceAll(".$", ""); >
Обратите внимание, что если строка заканчивается новой строкой, то описанный выше метод завершится ошибкой, поскольку «.» в регулярном выражении соответствует любому символу, кроме разделителей строк.
Наконец, давайте перепишем реализацию с помощью Java 8 :
public static String removeLastCharRegexOptional(String s) return Optional.ofNullable(s) .map(str -> str.replaceAll(".$", "")) .orElse(s); >
6. Заключение
В этой краткой статье мы обсудили разные способы удаления только последнего символа строки, какие-то ручные, а какие-то готовые из коробки.
Если нам нужна большая гибкость и нам нужно удалить больше символов, мы можем использовать более продвинутое решение с регулярными выражениями.
Как всегда, код, использованный в статье, можно найти на GitHub .
Программирование на C, C# и Java
Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode
Удаление символа из строки Java
В языке Java для строковых полей типа String отсутствует метод удаления символа с указанным индексом (в C# это метод Remove). Поэтому, чтобы произвести удаление символа из строки в Java нужно пойти на некоторые ухищрения. Рассмотрим в данном уроке один из таких способов.
Удаление символа с помощью комбинации методов substring
В Java у строк есть метод substring(int startIndex, int endIndex), который возвращает подстроку из исходной строки с позиции startIndex (включительно) до endIndex (не включительно). Нумерация индексов начинается с нуля.
С помощью данного метода извлечём из исходной строки две подстроки до и после удаляемого элемента (его индекс обозначим, как deletePosition) и соединим их в одну. Тем самым в новой строке будет отсутствовать символ с индексом deletePosition.
Переведём данные рассуждения в код.
Как удалить определенные символы из строки? [закрыт]
Учебные задания допустимы в качестве вопросов только при условии, что вы пытались решить их самостоятельно перед тем, как задать вопрос. Пожалуйста, отредактируйте вопрос и укажите, что именно вызвало у вас трудности при решении задачи. Например, приведите код, который вы написали, пытаясь решить задачу
Закрыт 4 года назад .
есть строка, в ней любые символы, и если в строке есть символы «sdaw» нужно их удалить, как я могу это сделать? Например (Строка-«srrw» Результат-«rr»)
Отслеживать
задан 30 сен 2019 в 17:02
27 1 1 серебряный знак 6 6 бронзовых знаков
Воспользуйтесь регулярными выражениями пишется в две строчки код, либо через цикл пройдитесь по символам и удалите.
30 сен 2019 в 17:48
я не знаю как это сделать, можете написать код?
30 сен 2019 в 18:01
Писать код за кого то, это не педагогично, предлагаю вам выложить что у вас получится, а мы поправим. Направление я вам указал, дальше хотя бы загуглить можете, примеров куча на данную тему.
30 сен 2019 в 18:06
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Gigors, удалять символы из строк типа String, удобно с помощью метода replace().
Например, если вы выполните такую инструкцию: System.out.println(«бололойка».replace(«о»,»а»));, то все буквы «о» в слове заменятся на буквы «а» и в консоль будет выведено слово «балалайка«.
Чтобы удалить буквы из строки, можно просто выполнить замену нужной буквы на «» (пустую строку). Например: System.out.println(«рододендрон».replace(«д»,»»)); удалит все буквы «д» и выведет в консоль «рооенрон«.
Этой информации вам уже вполне должно хватить, чтобы самостоятельно выполнить вашу задачу. Удачи вам!