Как вырезать часть строки java
Перейти к содержимому

Как вырезать часть строки java

  • автор:

Как вырезать часть строки java

Для соединения строк можно использовать операцию сложения («+»):

String str1 = "Java"; String str2 = "Hello"; String str3 = str1 + " " + str2; System.out.println(str3); // Hello Java

При этом если в операции сложения строк используется нестроковый объект, например, число, то этот объект преобразуется к строке:

String str3 = "Год " + 2015;

Фактически же при сложении строк с нестроковыми объектами будет вызываться метод valueOf() класса String. Данный метод имеет множество перегрузок и преобразует практически все типы данных к строке. Для преобразования объектов различных классов метод valueOf вызывает метод toString() этих классов.

Другой способ объединения строк представляет метод concat() :

String str1 = "Java"; String str2 = "Hello"; str2 = str2.concat(str1); // HelloJava

Метод concat() принимает строку, с которой надо объединить вызывающую строку, и возвращает соединенную строку.

Еще один метод объединения — метод join() позволяет объединить строки с учетом разделителя. Например, выше две строки сливались в одно слово «HelloJava», но в идеале мы бы хотели, чтобы две подстроки были разделены пробелом. И для этого используем метод join() :

String str1 = "Java"; String str2 = "Hello"; String str3 = String.join(" ", str2, str1); // Hello Java

Метод join является статическим. Первым параметром идет разделитель, которым будут разделяться подстроки в общей строке, а все последующие параметры передают через запятую произвольный набор объединяемых подстрок — в данном случае две строки, хотя их может быть и больше

Извлечение символов и подстрок

Для извлечения символов по индексу в классе String определен метод char charAt(int index) . Он принимает индекс, по которому надо получить символов, и возвращает извлеченный символ:

String str = "Java"; char c = str.charAt(2); System.out.println(c); // v

Как и в массивах индексация начинается с нуля.

Если надо извлечь сразу группу символов или подстроку, то можно использовать метод getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) . Он принимает следующие параметры:

  • srcBegin : индекс в строке, с которого начинается извлечение символов
  • srcEnd : индекс в строке, до которого идет извлечение символов
  • dst : массив символов, в который будут извлекаться символы
  • dstBegin : индекс в массиве dst, с которого надо добавлять извлеченные из строки символы
String str = "Hello world!"; int start = 6; int end = 11; char[] dst=new char[end - start]; str.getChars(start, end, dst, 0); System.out.println(dst); // world

Сравнение строк

Для сравнения строк используются методы equals() (с учетом регистра) и equalsIgnoreCase() (без учета регистра). Оба метода в качестве параметра принимают строку, с которой надо сравнить:

String str1 = "Hello"; String str2 = "hello"; System.out.println(str1.equals(str2)); // false System.out.println(str1.equalsIgnoreCase(str2)); // true

В отличие от сравнения числовых и других данных примитивных типов для строк не применяется знак равенства ==. Вместо него надо использовать метод equals() .

Еще один специальный метод regionMatches() сравнивает отдельные подстроки в рамках двух строк. Он имеет следующие формы:

boolean regionMatches(int toffset, String other, int oofset, int len) boolean regionMatches(boolean ignoreCase, int toffset, String other, int oofset, int len)

Метод принимает следующие параметры:

  • ignoreCase : надо ли игнорировать регистр символов при сравнении. Если значение true , регистр игнорируется
  • toffset : начальный индекс в вызывающей строке, с которого начнется сравнение
  • other : строка, с которой сравнивается вызывающая
  • oofset : начальный индекс в сравниваемой строке, с которого начнется сравнение
  • len : количество сравниваемых символов в обеих строках
String str1 = "Hello world"; String str2 = "I work"; boolean result = str1.regionMatches(6, str2, 2, 3); System.out.println(result); // true

В данном случае метод сравнивает 3 символа с 6-го индекса первой строки («wor») и 3 символа со 2-го индекса второй строки («wor»). Так как эти подстроки одинаковы, то возвращается true .

И еще одна пара методов int compareTo(String str) и int compareToIgnoreCase(String str) также позволяют сравнить две строки, но при этом они также позволяют узнать больше ли одна строка, чем другая или нет. Если возвращаемое значение больше 0, то первая строка больше второй, если меньше нуля, то, наоборот, вторая больше первой. Если строки равны, то возвращается 0.

Для определения больше или меньше одна строка, чем другая, используется лексикографический порядок. То есть, например, строка «A» меньше, чем строка «B», так как символ ‘A’ в алфавите стоит перед символом ‘B’. Если первые символы строк равны, то в расчет берутся следующие символы. Например:

String str1 = "hello"; String str2 = "world"; String str3 = "hell"; System.out.println(str1.compareTo(str2)); // -15 - str1 меньше чем strt2 System.out.println(str1.compareTo(str3)); // 1 - str1 больше чем str3

Поиск в строке

Метод indexOf() находит индекс первого вхождения подстроки в строку, а метод lastIndexOf() — индекс последнего вхождения. Если подстрока не будет найдена, то оба метода возвращают -1:

String str = "Hello world"; int index1 = str.indexOf('l'); // 2 int index2 = str.indexOf("wo"); //6 int index3 = str.lastIndexOf('l'); //9

Метод startsWith() позволяют определить начинается ли строка с определенной подстроки, а метод endsWith() позволяет определить заканчивается строка на определенную подстроку:

String str = "myfile.exe"; boolean start = str.startsWith("my"); //true boolean end = str.endsWith("exe"); //true

Замена в строке

Метод replace() позволяет заменить в строке одну последовательность символов на другую:

String str = "Hello world"; String replStr1 = str.replace('l', 'd'); // Heddo wordd String replStr2 = str.replace("Hello", "Bye"); // Bye world

Обрезка строки

Метод trim() позволяет удалить начальные и конечные пробелы:

String str = " hello world "; str = str.trim(); // hello world

Метод substring() возвращает подстроку, начиная с определенного индекса до конца или до определенного индекса:

String str = "Hello world"; String substr1 = str.substring(6); // world String substr2 = str.substring(3,5); //lo

Изменение регистра

Метод toLowerCase() переводит все символы строки в нижний регистр, а метод toUpperCase() — в верхний:

String str = "Hello World"; System.out.println(str.toLowerCase()); // hello world System.out.println(str.toUpperCase()); // HELLO WORLD

Split

Метод split() позволяет разбить строку на подстроки по определенному разделителю. Разделитель — какой-нибудь символ или набор символов передается в качестве параметра в метод. Например, разобьем текст на отдельные слова:

String text = «FIFA will never regret it»; String[] words = text.split(» «); for(String word : words)

В данном случае строка будет разделяться по пробелу. Консольный вывод:

FIFA will never regret it

Удаление часть текста из String (java)

@Vyacheslav-Mischenko думаю данном случае сабстринг не правильный вариант т.к. а что если то что надо удалить (у нас «Жили были баб-да деда») встречается не на одном месте? и по этому реплейс более правильный вариант.

12 июн 2018 в 5:30

Вы наверное хотели сказать с точностью наоборот) Реплейс в данном случае не годен, а вот в сабстринг позиция является ранее определенным значением

12 июн 2018 в 5:48

и почему же? что если: давайте вспомним что нибудь из русских сказок на пример Колобок ) там «Колобок, Колобок, я тебя съем!» встречается многократно, и надо удалить, вопрос как будете удалять с помощью сабстринга?

12 июн 2018 в 6:08

@Эникейщик там просто строка читается с 23го индекса/символа до конца. блин пока баллов/репутации не хватит чтоб оставить комменты, по этому и приходится создать новый ответ, сорри )

12 июн 2018 в 6:17

так задача не в том что бы удалить значения до определенного символа а удалить само Жили были баб-да деда. Как бы то ни было мне уже хорошо помог ответ Данила)

12 июн 2018 в 17:44

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Это делается таким образом (есть исходная строка source и строка для удаления delete ):

source = source.replace (delete, ""); 

То есть, по сути, вы просто заменяете строку на пустоту, или, другими словами, удаляете 🙂

Если надо, вот код готовый код:

import java.util.*; import java.lang.*; import java.io.*; import java.util.Scanner; class Ideone < public static void main (String[] args) throws java.lang.Exception < Scanner in = new Scanner (System.in); String source, delete; source = in.nextLine(); delete = in.nextLine(); source = source.replace (delete, ""); System.out.println (source); >> 

Отслеживать
ответ дан 11 июн 2018 в 12:10
Даниил Чижевский Даниил Чижевский
2,307 3 3 золотых знака 13 13 серебряных знаков 39 39 бронзовых знаков

Если нужно удалить только начало строки и/или конец строки, то можно взять часть строки от символа с номером startNum до конца строки , или до определенного символа endNum .
Файл «StringDel.java»:

 /* https://ru.stackoverflow.com/questions/840608/Удаление-часть-текста-из-string-java/840741#840741 */ package stringDel; /** * * @author vvm */ public class StringDel < public static void main(String[] args) < String str = "Жили были баб-да деда , была у них внучка Люба, очень красивая."; int startNum = 23; int endNum = str.length(); /*оставить только часть текста от startNum до endNum*/ str = str.substring(startNum, endNum); System.out.println(str); >> /* run: была у них внучка Люба, очень красивая. BUILD SUCCESSFUL (total time: 3 seconds) */ 

PS. Предыдущий ответ более подходит. Мой ответ можно рассматривать только как частный случай.

Как изящно извлечь из строки часть, находящуюся между двумя известными символами?

нужна часть между левой точкой и «:» (исходим из того, что уверенность в том, что в строке имеются оба символа один левее другого, имеется).

предложите хорошую идею.

мне только такое в голову приходит:

1 2 3 4
String str = "фыва пролджэ. йцукен гшщзхъ: ячсмить бю."; String[] lines = str.split (":"); lines = lines[0].split("\\."); String resultStr = lines[lines.length-1];

спасибо заранее!
Лучшие ответы ( 2 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Удаление в текстовом файле символов между двумя известными символами
Добрый день. Не нашёл решение проблемки на форуме, а суть проблемы в следующем: есть текстовичок.

Как выбрать из строки подстроку, находящуюся между двумя другими подстроками?
Как выбрать из строки подстроку находяшуюся мужду двумя другими подстраками? Например.

Вывести подстроку данной строки, находящуюся между символами a и b
Ребята подскажите как разобраться с проганьем задач в которых используются строки Подскажите.

Эксперт JavaЭксперт С++

8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709

Лучший ответ

Сообщение было отмечено как решение

Решение

String str = "фыва пролджэ. йцукен гшщзхъ: ячсмить бю."; String resultStr = str.substring(str.indexOf('.') + 1, str.indexOf(':'));

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

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

1. Строка replace() метод

Здесь идея состоит в том, чтобы извлечь подстроку, которую необходимо удалить или заменить, и вызвать метод replace() метод исходной строки путем передачи подстроки и замены.

class Main
public static String remove ( String text )
// начальный индекс включительно.
int beginIndex = text . indexOf ( ‘ ‘ ) ;
// конечный индекс, исключительный.
int endIndex = text . lastIndexOf ( ‘ ‘ ) ;
// получаем подстроку, которую нужно удалить
String target = text . substring ( beginIndex , endIndex ) ;
// заменяем цель пустой строкой
return text . replace ( target , «» ) ;
public static String replace ( String text , String replacement )
// начальный индекс включительно.
int beginIndex = text . indexOf ( ‘(‘ ) + 1 ;
// конечный индекс, исключительный.
int endIndex = text . lastIndexOf ( ‘)’ ) ;
// получаем подстроку, которую нужно заменить
String target = text . substring ( beginIndex , endIndex ) ;
return text . replace ( target , replacement ) ;
public static void main ( String [ ] args )
String str = «Java (SE Development Kit) 8» ;
System . out . println ( remove ( str ) ) ;
System . out . println ( replace ( str , «SDK» ) ) ;

результат:

Java 8
Java (SDK) 8

2. Использование Apache Commons Lang

Мы также можем использовать Apache Commons StringUtils remove() метод. Логика остается той же, что и в приведенном выше решении.

import org . apache . commons . lang3 . StringUtils ;
class Main
public static String remove ( String text )
// начальный индекс включительно.
int beginIndex = text . indexOf ( ‘ ‘ ) ;
// конечный индекс, исключительный.
int endIndex = text . lastIndexOf ( ‘ ‘ ) ;
// получаем подстроку, которую нужно удалить
String removeString = text . substring ( beginIndex , endIndex ) ;
return StringUtils . remove ( text , removeString ) ;
public static String replace ( String text , String replacement )
// начальный индекс включительно.
int beginIndex = text . indexOf ( ‘(‘ ) + 1 ;
// конечный индекс, исключительный.
int endIndex = text . lastIndexOf ( ‘)’ ) ;
// ищем подстроку, которую нужно заменить
String searchString = text . substring ( beginIndex , endIndex ) ;
return StringUtils . replace ( text , searchString , replacement ) ;
public static void main ( String [ ] args )
String str = «Java (SE Development Kit) 8» ;
System . out . println ( remove ( str ) ) ;
System . out . println ( replace ( str , «SDK» ) ) ;

результат:

Java 8
Java (SDK) 8

Это все об удалении или замене подстроки в Java.

Оценить этот пост

Средний рейтинг 5 /5. Подсчет голосов: 4

Голосов пока нет! Будьте первым, кто оценит этот пост.

Сожалеем, что этот пост не оказался для вас полезным!

Расскажите, как мы можем улучшить этот пост?

Спасибо за чтение.

Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂

Подписывайся
0 Комментарии
Встроенные отзывы
Просмотреть все комментарии
Загрузить больше комментариев
Просматривать
Подпишитесь на новые публикации

  • Все проблемы
  • Практика DSA
  • 100 самых популярных задач
  • 50 лучших классических задач
  • Лучшие алгоритмы
  • Компилятор С/С++
  • Компилятор Java
  • Компилятор Python
  • Компилятор JavaScript
  • компилятор PHP
  • Компилятор C#
  • Свяжитесь с нами
  • Политика конфиденциальности
  • условия обслуживания
  • Подпишитесь на новые публикации

Techie Delight © 2023 Все права защищены.

Этот веб-сайт использует файлы cookie. Используя этот сайт, вы соглашаетесь с использованием файлов cookie, нашей политикой, условиями авторского права и другими условиями. Читайте наши Политика конфиденциальности. Понятно

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *