Java string удалить до символа

Удалить или заменить часть строки в Java

В этом руководстве мы рассмотрим различные способы удаления или замены частиString в Java.

Мы рассмотрим удаление и / или замену подстроки с помощью APIString, затем с помощью APIStringBuilder и, наконец, с помощью классаStringUtils библиотеки Apache Commons.

В качестве бонусаwe’ll also look into replacing an exact word using the String API and the Apache Commons RegExUtils class.

2. String API

Один из самых простых и понятных методов замены подстроки — использоватьreplace, replaceAll orreplaceFirst из aString class.

Методreplace() принимает два аргумента — целевой и замещающий текст:

String master = "Hello World example!"; String target = "example"; String replacement = "Java"; String processed = master.replace(target, replacement); assertTrue(processed.contains(replacement)); assertFalse(processed.contains(target));

Приведенный выше фрагмент даст такой вывод:

Если для выбора цели требуется регулярное выражение, то следует выбрать методreplaceAll() илиreplaceFirst(). Как следует из их названия,replaceAll() will заменяет каждое совпадающее вхождение, аreplaceFirst() заменяет первое совпадающее вхождение:

String master2 = "Welcome to example, Hello World example"; String regexTarget = "(example)$"; String processed2 = master2.replaceAll(regexTarget, replacement); assertTrue(processed2.endsWith("Java"));
Welcome to example, Hello World Java

Это связано с тем, что регулярное выражение, представленное какregexTarget, будет соответствовать только последнему вхождениюexample. In all examples given above, we can use an empty replacement and it’ll effectively remove a target from a master.

3. StringBuilder API

Мы также можем управлять текстом в Java, используя классStringBuilder. . Здесь используются два метода:delete() иreplace().

Мы можем построить экземплярStringBuilder из существующегоString, а затем использовать упомянутые методы для выполнения манипуляции сString по желанию:

String master = "Hello World example!"; String target = "example"; String replacement = "Java"; int startIndex = master.indexOf(target); int stopIndex = startIndex + target.length(); StringBuilder builder = new StringBuilder(master);

Теперь мы можем удалитьtarget с помощьюdelete():

builder.delete(startIndex, stopIndex); assertFalse(builder.toString().contains(target));

Мы также можем использоватьreplace() для обновления мастера:

builder.replace(startIndex, stopIndex, replacement); assertTrue(builder.toString().contains(replacement));

Одно очевидное различие между использованиемStringBuilder иString API состоит в том, что мы сами должны получить начальный и конечный индексtargetString.

4. StringUtils класс

Еще один метод, который мы рассмотрим, — это библиотека Apache Commons.

Для начала добавим в наш проект необходимую зависимость:

 org.apache.commons commons-lang3 3.8.1 

Последнюю версию библиотеки можно найтиhere.

В классеStringUtils есть методы для замены подстрокиString:

String master = "Hello World example!"; String target = "example"; String replacement = "Java"; String processed = StringUtils.replace(master, target, replacement); assertTrue(processed.contains(replacement));

Существует перегруженный вариантreplace(), который принимает целочисленный параметрmax, который определяет количество заменяемых экземпляров. We can also use the replaceIgnoreCase() if case-sensitivity is not a concern:

String master2 = "Hello World example!"; String target2 = "example"; String processed2 = StringUtils.replaceIgnoreCase(master2, target2, replacement); assertFalse(processed2.contains(target));

5. Замена точных слов

В этом последнем примереwe’ll learn how to replace an exact word inside a String.

Самый простой способ выполнить эту замену -using a regular expression с границами слов.

The word boundary regular expression is . Заключение искомого слова в это регулярное выражение будет соответствовать только точным вхождениям.

Во-первых, давайте посмотрим, как использовать это регулярное выражение с String API:

String sentence = "A car is not the same as a carriage, and some planes can carry cars inside them!"; String regexTarget = "\\bcar\\b"; String exactWordReplaced = sentence.replaceAll(regexTarget, "truck");
"A truck is not the same as a carriage, and some planes can carry cars inside them!"

Only the exact word will be replaced. Обратите внимание наbackward slash always needs to be escaped при работе с регулярными выражениями в Java.

Альтернативный способ сделать эту замену — использовать классRegExUtils из библиотеки Apache Commons, который можно добавить в качестве зависимости, как мы видели в предыдущем разделе:

String regexTarget = "\\bcar\\b"; String exactWordReplaced = RegExUtils.replaceAll(sentence, regexTarget, "truck");

Хотя оба метода дадут один и тот же результат, решение о том, какой из них следует использовать, будет зависеть от нашего конкретного сценария.

6. Заключение

В заключение мы рассмотрели несколько способов удаления и замены подстроки в Java. Лучший способ применить все еще в значительной степени зависит от текущей ситуации и контекста.

Как обычно, доступен полный исходный кодover on Github.

Источник

Работа строками, удалить и заменить до определенного символа

Дано строка. До первой точки удалить все запятые. После первой точки все символы-«5», заменить на «+»-символы. Помогите пожалуйста.

Удалить часть строки от определенного символа до определенного символа
Всем привет, есть строка 127.0.0.1(spec) (domen\admin — user) как удалить не нужные символы.

Как скопировать подстроку из строки до определенного символа? Или удалить, начиная с этого символа
Добрый вечер. Ответ искал, но не нашёл. Предположим, есть строка: ABC|DEF Надо скопировать.

Удалить после определенного символа
Есть IP в в виде строки, например 192.168.168.168, может быть 192.168.16.16 и т.д. Может быть любое.

Удалить подстроку до определенного символа
Из строки нужно удалить подстроку до #. Например (длина строки или подстроки может быть разной).

Почитайте, например: http://study-java.ru/uroki-jav. sa-string/
В общих чертах, вам приблизительно надо следующее:
Найти индекс точки через, допустим, indexOf(‘.’). Заменить в строке до этого индекса все «,», например. методом replaceAll
То же самое проделать и для второго куска строки.

Эксперт Java

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
public class Main { public static void main(String[] args) { String str = "фы,в,а прdfverrо,лд,жэ. йцук5ен гш5щз5rfrf55rf5ъ: яч5сми5ть5бю"; String Str1 = str.substring(+ 0, str.indexOf('.')); String A = Str1.replaceAll(",", ""); String Str2 = str.substring(str.indexOf('.')); String B = Str2.replace ('5', '+'); String result = A + B; System.out.print(result); // write your code here } }

Удалить дубликаты определённого символа
Существует строка, например ////aa/bbb//c/// На выходе нужно получить: /aa/bbb/c/ То есть.

Заменить часть String с определенного символа до другого
Как заменить часть string с определенного символа до другого? Т.е у меня такой набор символов.

Как удалить текст до определенного символа
Доброго времени суток, друзья Подскажите как возможно решить такие задачи через VBA: Есть.

Удалить текст после определенного символа
Здравствуйте! Есть текст: "111; 222; 333; 444; 555; 666; 777" Нужно сделать так, что бы при.

Источник

Удалить или заменить часть строки в Java

Изучите несколько способов удаления и замены подразрядки на Java.

1. Обзор

В этом учебнике мы будем рассматривать различные средства, которые мы можем удалить или заменить часть Струнные на Яве.

Мы изучить удаление и/или замену подразрядки с помощью Струнные API, затем с помощью Стрингбилдер API и, наконец, с помощью СтрингУтилс класса библиотеки Apache Commons.

В качестве бонуса, Мы также будем смотреть на замену точное слово, используя API строки и apache Commons RegExUtils класс .

2. Строка API

Одним из самых простых и простых методов замены подразрядки является использование заменить, заменитьВсе или заменитьПервый из Струнный класс.

заменить () метод принимает два аргумента – целевой и замены текста:

String master = "Hello World Baeldung!"; String target = "Baeldung"; String replacement = "Java"; String processed = master.replace(target, replacement); assertTrue(processed.contains(replacement)); assertFalse(processed.contains(target));

Вышеупомянутый фрагмент даст этот вывод:

Если при выборе цели требуется регулярное выражение, то заменитьВсе () или заменитьПервый () должен быть метод выбора. Как следует из их названия, заменитьВсе () заменит каждое совпадение, в то время как заменитьПервый () заменит первое совпадение:

String master2 = "Welcome to Baeldung, Hello World Baeldung"; String regexTarget = "(Baeldung)$"; String processed2 = master2.replaceAll(regexTarget, replacement); assertTrue(processed2.endsWith("Java"));

Значение обработано2 будет:

Welcome to Baeldung, Hello World Java

Это потому, что regex поставляется как regexTarget будет соответствовать только последнему появлению Бэлдунг. Во всех примерах, приведенных выше, мы можем использовать пустую замену, и это будет эффективно удалить целевые из мастер .

3. Api StringBuilder

Мы также можем манипулировать текстом на Java, используя Стрингбилдер класс . Два метода здесь удалить () и заменить () .

Мы можем построить экземпляр Стрингбилдер из существующего Струнные а затем использовать упомянутые методы для выполнения Струнные манипуляции по желанию:

String master = "Hello World Baeldung!"; String target = "Baeldung"; String replacement = "Java"; int startIndex = master.indexOf(target); int stopIndex = startIndex + target.length(); StringBuilder builder = new StringBuilder(master);

Теперь мы можем удалить целевые с удалить () :

builder.delete(startIndex, stopIndex); assertFalse(builder.toString().contains(target));

Мы также можем использовать заменить () обновить мастера:

builder.replace(startIndex, stopIndex, replacement); assertTrue(builder.toString().contains(replacement));

Одно явное различие между использованием Стрингбилдер и Струнные API заключается в том, что мы должны получить стартовый и стоп-индекс целевые Струнные себя.

4. Класс StringUtils

Другим методом, который мы рассмотрим, является библиотека Apache Commons.

Во-первых, давайте добавим необходимую зависимость к нашему проекту:

 org.apache.commons commons-lang3 3.11 

Последнюю версию библиотеки можно найти здесь.

СтрингУтилс класс имеет методы замены подразрядки Струнные :

String master = "Hello World Baeldung!"; String target = "Baeldung"; String replacement = "Java"; String processed = StringUtils.replace(master, target, replacement); assertTrue(processed.contains(replacement));

Существует перегруженный вариант заменить () что занимает более интегративную макс параметр, который определяет количество возникновений для замены. Мы также можем использовать заменитьИгнорКейс () если чувствительность к делу не является проблемой :

String master2 = "Hello World Baeldung!"; String target2 = "baeldung"; String processed2 = StringUtils.replaceIgnoreCase(master2, target2, replacement); assertFalse(processed2.contains(target));

5. Замена точных слов

В этом последнем примере Мы научимся заменять точное слово внутри Струнные .

Простой способ выполнить эту замену использует регулярное выражение с границами слов.

Регулярное выражение границы слова Зб . Включение нужного слова в это обычное выражение будет соответствовать только точным явлениям.

Во-первых, давайте посмотрим, как использовать это обычное выражение с API строки:

String sentence = "A car is not the same as a carriage, and some planes can carry cars inside them!"; String regexTarget = "\\bcar\\b"; String exactWordReplaced = sentence.replaceAll(regexTarget, "truck");

exactWordReplaced строка содержит:

"A truck is not the same as a carriage, and some planes can carry cars inside them!"

Только точное слово будет заменено. Обратите назад черту всегда необходимо избежать при работе с регулярными выражениями на Java.

Альтернативным способом сделать эту замену является использование RegExUtils класс из библиотеки Apache Commons, который может быть добавлен в качестве зависимости, как мы видели в предыдущем разделе:

String regexTarget = "\\bcar\\b"; String exactWordReplaced = RegExUtils.replaceAll(sentence, regexTarget, "truck");

Хотя оба метода будут приносить один и тот же результат, решение о том, какой из них следует использовать, будет зависеть от нашего конкретного сценария.

6. Заключение

В заключение мы изучили несколько способов удаления и замены подразрядки на Java. Наилучший метод применения по-прежнему во многом зависит от текущей ситуации и контекста.

Как обычно, полный исходный код доступен более на Github .

Читайте ещё по теме:

Источник

Читайте также:  Python is attribute exist
Оцените статью