Java обрезать строку слева

Java — обрезать строку слева с флагом форматирования

Флаг — предназначен для обоснования и, похоже, не имеет ничего общего с усечением. . используется для «точности», что, по-видимому, означает усечение аргументов строки. Я не думаю, что форматированные строки поддерживают усечение слева. Вам придётся прибегнуть к

String.format("[%.5s]", s.length() > 5 ? s.substring(s.length()-5) : s); 

Да, я понял. Причина, по которой я не хотел прибегать к этому, заключается в том, что я создал оболочку sorta для строкового формата, которая позволяет пользователям предоставлять значение Map и ссылаться на объекты в нем по имени вместо индекса (IE). % SOMEKEY $ s «вместо»% 1 $ s «). Это должно быть в состоянии обрезать слева. Это просто направляет значения в стандартный форматировщик строк. Я нашел обходной путь с некоторыми умеренно отточенными изменениями строк, и с помощью регулярных выражений, так что все хорошо, что хорошо кончается: D

Похоже на аккуратную утилиту. Вы смотрели в MessageFormat ? Кажется, не делает то, что вы хотите, но, возможно, это ближе, чем String.format .

Надеюсь, это то, что вам нужно:

System.out.println("'" + String.format("%-5.5s", "") + "'"); System.out.println("'" + String.format("%-5.5s", "123") + "'"); System.out.println("'" + String.format("%-5.5s", "12345") + "'"); System.out.println("'" + String.format("%-5.5s", "1234567890. ") + "'"); 

длина вывода всегда равна 5:

‘ ‘ — заполненный 5 пробелами
‘123 , заполненный 2-мя пробелами после ‘12345’ — равно ‘12345’ — усеченный

System.out.println("'" + String.format("%5.5s", "123") + "'"); 

‘ 123’, заполненный двумя пробелами перед тем, как

Читайте также:  Что такое делегация java

Этот ответ является правильным, поскольку усекает правую часть строки, но ОП хочет урезать слева (необычно, но это то, что он хочет)

Вы также можете использовать метод для управления строками

substring(startindex, endIndex) 

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

А также можно попробовать использовать класс StringBuilder.

apache commons StringUtils.substring (. ), кажется, хорошо работает для меня (так как у меня уже есть используемая библиотека).

@VGR VGR, иногда лучшие ответы — это те, которые предлагают лучший способ сделать что-то, чем тот, на кого изначально надеялись. Это ни в коем случае не плохой ответ, особенно учитывая, что принятый ответ говорит: «Вы не можете использовать string.format» и предлагает сам обходной путь (по иронии судьбы, используя метод подстроки ).

Ещё вопросы

  • 1 PropertyChangedEvent запускается несколько раз
  • 0 Функция php mail с адреса электронной почты показывает адрес почтового сервера
  • 1 Могу ли я перехватить вставку в ячейку DataGrid?
  • 0 Попытка сделать добавление текста буква за буквой
  • 1 Virtuoso Jena Provider Construct Query Error
  • 0 преобразовать итерационную функцию в рекурсивную функцию
  • 1 Не удается получить доступ к активации, деактивации или conda в среде conda
  • 0 Mysql-запрос с левым соединением — специализировать индекс, если две строки совпадают
  • 0 пакет udp не получен в QThread
  • 1 Как получить GAL из Outlook в Интернете
  • 1 Android Studio — сбой службы после того, как WebView использует файл: /// для отображения локального веб-сайта
  • 1 Простой Android запрос https?
  • 1 Получить текст XML-узла с заданным текстом соседнего узла с помощью xpath
  • 0 Передать параметр в URL в JavaScript
  • 0 угловой JS NG-повтор в одном элементе textarea
  • 1 Определить, когда анимация завершена (AnimationListener)
  • 1 Использование pywinauto для открытия диалогового окна Кнопка «Отмена»
  • 0 импорт модуля python, который находится в C ++, скомпилирован с gcc 4.4.3
  • 4 Gradle 5.x — Ошибка публикации моей библиотеки в Maven Local
  • 1 Где в конечном итоге происходит создание клика в Enterprise Architect?
  • 0 JPlayer не воспроизводит видео в IE
  • 0 Javascript (NodeJs) — Преобразование массивов и объектов в массовую вставку в MySQL (Sequelize)
  • 0 Как добавить текст с пробелами для метки с помощью jquery?
  • 0 SQL несколько строк в одной строке
  • 1 Xamarin Profiler вылетает приложение с самого начала
  • 0 Как получить ID оборудования в Java и C ++
  • 0 Всегда сверху всплывающие окна
  • 1 Как рассчитать выход нейронной сети?
  • 0 Получить все результаты из первой таблицы в соединении MySQL
  • 0 Как выбрать элемент кроме его дочерних элементов?
  • 1 Уведомление не работает .. вечно жду нить Java
  • 1 как посчитать количество слов в Android Kotlin?
  • 0 Получить текст из строки столбца
  • 0 Mysql: Как создать столбец, который представляет собой разницу между столбцом в таблице и другим столбцом в представлении
  • 1 Передача массива из js for loop в данные серии highcharts
  • 1 Как получить трансляцию ACTION_POWER_CONNECTED на Android 8
  • 0 Динамический выпадающий список с использованием HTML и PHP
  • 0 обслуживать несколько каталогов в ngnix
  • 1 Java BufferedReader FileReader проблема
  • 0 Как вставить вывод сложной команды терминала linux в таблицу базы данных mysql
  • 1 Повторное использование потоков данных в течение некоторого времени
  • 0 Получение contact.id после сохранения контактного плагина Cordova
  • 0 Представления не обновляются после изменений — Play Framework 2
  • 0 AngularJS, проблемы с переменной $ index в ng-repeat
  • 1 Как сделать изображение и отобразить его на следующей странице
  • 1 Боке: Не удается обновить формат всплывающей подсказки
  • 1 Как использовать внешний SDK с Nativescript
  • 0 Как добавить значение в пользовательский атрибут с помощью JQuery?
  • 0 Данные angularjs в службе не могут быть разделены между различными контроллерами
  • 0 Извлечение Src и вставить перед HTML-ссылку с помощью JQuery

Источник

Операции со строками и подстроками в Java

В этой статье мы рассмотрим операции со строкой и подстрокой. Вы узнаете, как соединять и сравнивать строки, как извлекать символы и подстроки, как выполнять поиск в строке.

Соединение строк в Java

Чтобы соединить строки в Java, подойдёт операция сложения «+» :

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

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

По факту, когда мы складываем строки с нестроковыми объектами, вызывается метод valueOf() класса String. Этот метод преобразует к строке почти все типы данных. Чтобы преобразовать объекты разных классов, valueOf вызывает метод toString() данных классов.

Объединять строки можно и с помощью concat() :

 
String str1 = "Java"; String str2 = "Hi"; str2 = str2.concat(str1); // HiJava 

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

Также мы можем использовать метод join() , позволяющий объединять строки с учетом разделителя. Допустим, две строки выше слились в слово "HiJava", однако мы бы хотели разделить подстроки пробелом. Тут и пригодится join() :

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

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

Извлекаем символы и подстроки в Java

Чтобы извлечь символы по индексу, в классе 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 = "Hi world!"; int start = 6; int end = 11; char[] dst=new char[end - start]; str.getChars(start, end, dst, 0); System.out.println(dst); // world 

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

Мы уже писали о том, как сравнивать строки в Java, используя для этого метод equals() (регистр учитывается) и equalsIgnoreCase() (регистр не учитывается). Хотелось бы сказать пару слов про ещё одну пару методов: int compareTo(String str) и int compareToIgnoreCase(String str) — они позволяют не только сравнить 2 строки, но и узнать, больше ли одна другой. Если значение, которое возвращается, больше 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 

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

Чтобы найти индекс первого вхождения подстроки в строку, используют метод 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 

Выполняем замену в строке в Java

Заменить в нашей строке одну последовательность символов другой можно с помощью метода replace() :

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

Обрезаем строки в Java

Для удаления начальных и конечных пробелов применяют метод 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 

Меняем регистр в Java

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

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

Split

С помощью этого метода вы сможете разбить строку на подстроки по конкретному разделителю. Под разделителем понимается какой-либо символ либо набор символов, передаваемые в метод в качестве параметра. Давайте для примера разобьём небольшой текст на отдельные слова:

 
String text = "OTUS is a good company"; String[] words = text.split(" "); for(String word : words) System.out.println(word); > 

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

Вот и всё! Узнать больше всегда можно на наших курсах:

Источник

Оцените статью