Перейти к содержимому

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

  • автор:

Как обрезать строку до заданного количества символов

Есть переменная String mawa; , в которой хранится некий текст. Как сделать так, чтобы этот текст обрезался до 25 символов?

Отслеживать
36.8k 6 6 золотых знаков 48 48 серебряных знаков 125 125 бронзовых знаков
задан 26 сен 2015 в 8:26
2,124 4 4 золотых знака 32 32 серебряных знака 84 84 бронзовых знака

3 ответа 3

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

mawa = mawa.substring(startindex, endindex); 

Отслеживать
ответ дан 26 сен 2015 в 8:33
Nick Volynkin ♦ Nick Volynkin
34k 25 25 золотых знаков 130 130 серебряных знаков 222 222 бронзовых знака

В предыдущих ответах не упомянуто, что будет, если исходная строка короче 25 символов. Если такая ситуация возможна, её следует обработать отдельно. Например:

int limit = 25; String subStr = mawa.length() > limit ? mawa.substring(0, limit) : mawa; 

Также не упомянуто, что будет, если строка содержит суррогатные пары UTF-16. Предположим, ваши пользователи — мормоны-фундаменталисты и общаются с помощью Дезеретского алфавита:

String mawa = "����������������������������������������������������������������"; 

Попробуем сделать наивным способом:

String subStr = mawa.substring(0, 25); System.out.println(subStr); 

В результате видим:

Символов всего 12 и вопросик ещё в конце появился странный. Определённо такая программа не проявляет должного уважения к мормонам-фундаменталистам. Чтобы всё работало правильно, надо, например, так:

int limit = 25; String subStr = mawa.codePointCount(0, mawa.length()) > limit ? mawa.substring(0, mawa.offsetByCodePoints(0, limit)) : mawa; System.out.println(subStr); 

Тогда мы видим действительно 25 символов:

Вам всё ещё кажется, что взять подстроку от строки просто?

Отслеживать
ответ дан 29 сен 2015 в 3:04
Tagir Valeev Tagir Valeev
5,509 16 16 серебряных знаков 42 42 бронзовых знака

mawa.substring(0,25); 

Метод substring() используется для извлечения подстроки из объекта String . Этот метод создает новую копию символов из того диапазона индексов оригинальной строки, который вы указали при вызове.
Можно указать только индекс первого символа нужной подстроки — тогда будут скопированы все символы, начиная с указанного и до конца строки. Также можно указать и начальный, и конечный индексы — при этом в новую строку будут скопированы все символы, начиная с первого ука­занного, и до (но не включая его) символа, заданного конечным индек­сом.

"Hello World".substring(6) -> "World" "Hello World".substring(3,8) -> "lo Wo" 

Как удалить часть строки java

Метод replace поможет удалить все вхождения подстроки, а метод replaceFirst только первое вхождение.

Так как строки в Java неизменяемы, то любое удаление части строки сводится к созданию новой строки на основе старой, в которой будет отсутствовать удаляемая подстрока :

String str = "10 20 30 10 20 30"; String newStr = str.replace("10 ", ""); System.out.println(newStr); // => 20 30 20 30 str = "10 20 30 10 20 30"; newStr = str.replaceFirst("10 ", ""); System.out.println(newStr); // => 20 30 10 20 30 

15.25. Java – Метод substring()

Метод substring() в Java имеет два варианта и возвращает новую строку, которая является подстрокой данной строки. Подстрока начинается с символа, заданного индексом, и продолжается до конца данной строки или до endIndex-1, если введен второй аргумент.

Синтаксис

public String substring(int beginIndex) или public String substring(int beginIndex, int endIndex) 

Параметры

Подробная информация о параметрах:

  • beginIndex – начальный индекс, включительно;
  • endIndex – конечный индекс, не включая.

Возвращаемое значение

  • В Java substring() возвращаемое значение заданно подстрокой.

Пример

import java.io.*; public class Test < public static void main(String args[])< String Str = new String("Добро пожаловать на ProgLang.su"); System.out.print("Возвращаемое значение: "); System.out.println(Str.substring(5)); System.out.print("Возвращаемое значение: "); System.out.println(Str.substring(5, 15)); >> 

Получим следующий результат:

Возвращаемое значение: пожаловать на ProgLang.su Возвращаемое значение: пожаловат 

Оглавление

  • 1. Java – Самоучитель для начинающих
  • 2. Java – Обзор языка
  • 3. Java – Установка и настройка
  • 4. Java – Синтаксис
  • 5. Java – Классы и объекты
  • 6. Java – Конструкторы
  • 7. Java – Типы данных и литералы
  • 8. Java – Типы переменных
  • 9. Java – Модификаторы
  • 10. Java – Операторы
  • 11. Java – Циклы и операторы цикла
  • 11.1. Java – Цикл while
  • 11.2. Java – Цикл for
  • 11.3. Java – Улучшенный цикл for
  • 11.4. Java – Цикл do..while
  • 11.5. Java – Оператор break
  • 11.6. Java – Оператор continue
  • 12. Java – Операторы принятия решений
  • 12.1. Java – Оператор if
  • 12.2. Java – Оператор if..else
  • 12.3. Java – Вложенный оператор if
  • 12.4. Java – Оператор switch..case
  • 12.5. Java – Условный оператор (? 🙂
  • 13. Java – Числа
  • 13.1. Java – Методы byteValue(), shortValue(), intValue(), longValue(), floatValue(), doubleValue()
  • 13.2. Java – Метод compareTo()
  • 13.3. Java – Метод equals()
  • 13.4. Java – Метод valueOf()
  • 13.5. Java – Метод toString()
  • 13.6. Java – Метод parseInt()
  • 13.7. Java – Метод Math.abs()
  • 13.8. Java – Метод Math.ceil()
  • 13.9. Java – Метод Math.floor()
  • 13.10. Java – Метод Math.rint()
  • 13.11. Java – Метод Math.round()
  • 13.12. Java – Метод Math.min()
  • 13.13. Java – Метод Math.max()
  • 13.14. Java – Метод Math.exp()
  • 13.15. Java – Метод Math.log()
  • 13.16. Java – Метод Math.pow()
  • 13.17. Java – Метод Math.sqrt()
  • 13.18. Java – Метод Math.sin()
  • 13.19. Java – Метод Math.cos()
  • 13.20. Java – Метод Math.tan()
  • 13.21. Java – Метод Math.asin()
  • 13.22. Java – Метод Math.acos()
  • 13.23. Java – Метод Math.atan()
  • 13.24. Java – Метод Math.atan2()
  • 13.25. Java – Метод Math.toDegrees()
  • 13.26. Java – Метод Math.toRadians()
  • 13.27. Java – Метод Math.random()
  • 14. Java – Символы
  • 14.1. Java – Метод Character.isLetter()
  • 14.2. Java – Метод Character.isDigit()
  • 14.3. Java – Метод Character.isWhitespace()
  • 14.4. Java – Метод Character.isUpperCase()
  • 14.5. Java – Метод Character.isLowerCase()
  • 14.6. Java – Метод Character.toUpperCase()
  • 14.7. Java – Метод Character.toLowerCase()
  • 14.8. Java – Метод Character.toString()
  • 15. Java – Строки
  • 15.1. Java – Метод charAt()
  • 15.2. Java – Метод compareTo()
  • 15.3. Java – Метод compareToIgnoreCase()
  • 15.4. Java – Метод concat()
  • 15.5. Java – Метод contentEquals()
  • 15.6. Java – Метод copyValueOf()
  • 15.7. Java – Метод endsWith()
  • 15.8. Java – Метод equals()
  • 15.9. Java – Метод equalsIgnoreCase()
  • 15.10. Java – Метод getBytes()
  • 15.11. Java – Метод getChars()
  • 15.12. Java – Метод hashCode()
  • 15.13. Java – Метод indexOf()
  • 15.14. Java – Метод intern()
  • 15.15. Java – Метод lastIndexOf()
  • 15.16. Java – Метод length()
  • 15.17. Java – Метод matches()
  • 15.18. Java – Метод regionMatches()
  • 15.19. Java – Метод replace()
  • 15.20. Java – Метод replaceAll()
  • 15.21. Java – Метод replaceFirst()
  • 15.22. Java – Метод split()
  • 15.23. Java – Метод startsWith()
  • 15.24. Java – Метод subSequence()
  • 15.25. Java – Метод substring()
  • 15.26. Java – Метод toCharArray()
  • 15.27. Java – Метод toLowerCase()
  • 15.28. Java – Метод toString()
  • 15.29. Java – Метод toUpperCase()
  • 15.30. Java – Метод trim()
  • 15.31. Java – Метод valueOf()
  • 15.32. Java – Классы StringBuilder и StringBuffer
  • 15.32.1. Java – Метод append()
  • 15.32.2. Java – Метод reverse()
  • 15.32.3. Java – Метод delete()
  • 15.32.4. Java – Метод insert()
  • 15.32.5. Java – Метод replace()
  • 16. Java – Массивы
  • 17. Java – Дата и время
  • 18. Java – Регулярные выражения
  • 19. Java – Методы
  • 20. Java – Потоки ввода/вывода, файлы и каталоги
  • 20.1. Java – Класс ByteArrayInputStream
  • 20.2. Java – Класс DataInputStream
  • 20.3. Java – Класс ByteArrayOutputStream
  • 20.4. Java – Класс DataOutputStream
  • 20.5. Java – Класс File
  • 20.6. Java – Класс FileReader
  • 20.7. Java – Класс FileWriter
  • 21. Java – Исключения
  • 21.1. Java – Встроенные исключения
  • 22. Java – Вложенные и внутренние классы
  • 23. Java – Наследование
  • 24. Java – Переопределение
  • 25. Java – Полиморфизм
  • 26. Java – Абстракция
  • 27. Java – Инкапсуляция
  • 28. Java – Интерфейсы
  • 29. Java – Пакеты
  • 30. Java – Структуры данных
  • 30.1. Java – Интерфейс Enumeration
  • 30.2. Java – Класс BitSet
  • 30.3. Java – Класс Vector
  • 30.4. Java – Класс Stack
  • 30.5. Java – Класс Dictionary
  • 30.6. Java – Класс Hashtable
  • 30.7. Java – Класс Properties
  • 31. Java – Коллекции
  • 31.1. Java – Интерфейс Collection
  • 31.2. Java – Интерфейс List
  • 31.3. Java – Интерфейс Set
  • 31.4. Java – Интерфейс SortedSet
  • 31.5. Java – Интерфейс Map
  • 31.6. Java – Интерфейс Map.Entry
  • 31.7. Java – Интерфейс SortedMap
  • 31.8. Java – Класс LinkedList
  • 31.9. Java – Класс ArrayList
  • 31.10. Java – Класс HashSet
  • 31.11. Java – Класс LinkedHashSet
  • 31.12. Java – Класс TreeSet
  • 31.13. Java – Класс HashMap
  • 31.14. Java – Класс TreeMap
  • 31.15. Java – Класс WeakHashMap
  • 31.16. Java – Класс LinkedHashMap
  • 31.17. Java – Класс IdentityHashMap
  • 31.18. Java – Алгоритмы Collection
  • 31.19. Java – Iterator и ListIterator
  • 31.20. Java – Comparator
  • 32. Java – Дженерики
  • 33. Java – Сериализация
  • 34. Java – Сеть
  • 34.1. Java – Обработка URL
  • 35. Java – Отправка Email
  • 36. Java – Многопоточность
  • 36.1. Java – Синхронизация потоков
  • 36.2. Java – Межпоточная связь
  • 36.3. Java – Взаимная блокировка потоков
  • 36.4. Java – Управление потоками
  • 37. Java – Основы работы с апплетами
  • 38. Java – Javadoc

Поиск, получение, удаление подстроки в String

Методы indexOf, lastIndexOf позволяют искать строки в строках. Есть 4 вида таких методов:

Метод indexOf ищет в нашей строке указанную строку. Он может искать ее с начала строки или начиная с какого-то номера (второй метод). Если строка найдена – метод возвращает номер ее первого символа, если не найдена — возвращает -1

int indexOf(String str)
String s text-green">Good news everyone!"; int index = s.indexOf("ne");
index == 5
int indexOf(String str, int from)
String s text-green">ws everyone!"; int index = s.indexOf("ne", 7);
index == 16

Метод lastIndexOf ищет указанную строку в нашей строке с конца! Он может искать ее с самого конца строки или начиная с какого-то номера (второй метод). Если строка найдена – метод возвращает номер ее первого символа, если не найдена — возвращает -1.

int lastIndexOf(String str)
String s text-green">Good news everyone!"; int index = s.lastIndexOf("ne");
index == 16
int lastIndexOf(String str, int from)
String s text-green">Good news everyone!"; int index = s.lastIndexOf("ne", 15);
index == 5

9) Как заменить часть строки на другую?

Для этого есть три метода.

Метод replace заменяет все вхождения определенного символа на другой.

Метод replaceAll заменяет все вхождения одной подстроки на другую.

Метод replaceFirst заменяет первое вхождение переданной подстроки на заданную подстроку.

String replace(char oldChar, char newChar)
String s ; String s2 = s.replace ('o', 'a');
String replaceAll(String regex, String replacement)
String s ; String s2 = s.replaceAll("ne", "_");
s2 == "Good _ws everyo_!";
String replaceFirst(String regex, String replacement)
String s ; String s2 = s.replaceFirst("ne", "_");
s2 == "Good _ws everyone!";

Но тут нужно быть аккуратным. В двух последних методах (replaceAll&replaceFirst) в качестве строки, которую мы ищем, передается не просто строка, а регулярное выражение. Но об этом я расскажу позднее.

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

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