Как удалить пробел в конце строки java
Анализ данных с помощью регулярных выражений или быстрый способ проверки введенных данных (часть вторая)
Теперь давайте посмотрим примеры использования регулярных выражений для решения конкретных задач.
Удаление лишних пробелов
При вводе данных в форму пользователь может случайно поставить несколько пробелов (или знаков табуляции) до начала текста или в его конце. Эти пробелы обычно не несут никакой информации и их нужно удалить.
В первую очередь создадим необходимые нам шаблоны. Для выделения пробелов в начале строки нам подойдет » ^\\s+ «. Символ ^ означает начало строки, а \\s+ — один или более пробелов. Для того чтобы удалить пробелы можно воспользоваться методом replaceFirst(«») класса Matcher с пустой строкой в качестве параметра. Этот метод заменяет первый найденный фрагмент строки, который соответствует регулярному выражению, на заданную строку.
Например:
Pattern p = Pattern.compile("^\\s+"); Matcher m = p.matcher(input); String output = m.replaceFirst("");
Для выделения пробелов в конце строки немного изменим шаблон » \\s+$ «. Практически тоже самое, только в конце выражения стоит символ $ , который означает конец строки.
Код для использования шаблона будет выглядеть примерно так:
p = Pattern.compile("\\s+$"); m = p.matcher(output); output = m.replaceAll("");
Это продолжение предыдущего фрагмента кода, поэтому строка output используется как исходная строка. Т.е. сначала мы удаляем пробелы в начале строки, а потом – в её конце. Метод replaceAll , в отличие от replaceFirst заменяет на заданную строку (в данном случае «» ) все фрагменты строки, которые соответствуют шаблону. Для этой программы не играет роли, каким методом мы воспользуемся, т.к. может быть только одна группа пробелов в начале строки, и одна – в конце.
Вы можете скачать программу для удаления пробелов, которая работает по описанному здесь методу. После запуска введите какую-нибудь строку, например: » привет «. В результате вы получите: «привет».
Проверка формата телефонного номера
Теперь посмотрим более сложный пример. Допустим, у нас есть форма, в которую пользователь должен ввести номер телефона. Телефонные номера обычно записываются в виде групп цифр, разделенных дефисами, но это не обязательно. Между цифрами могут быть пробелы, а могут и не быть. Кроме того, номер может содержать код города, который обычно записывается в круглых скобках.
Т.е. возможны такие варианты записи:
555-33-44
555 – 43 – 78
(333) 44 – 55- 88
8-(022)-4-333-111
456789
Наша задача: проверить, насколько это возможно, правильность ввода номера.
Для этого можно воспользоваться таким регулярным выражением: » [\\d\\s()\\-]+ «. Здесь в квадратных скобках мы определили класс символов, в который входят все цифры \\d , все пробельные символы \\s , круглые скобки и дефис. Знак + в конце выражения означает, что любой из этих символов, может встречаться один или более раз.
Для того чтобы проверить соответствие введенного номера, нашему выражению, воспользуемся методом matches() класса Matcher . Он возвращает true , если заданная строка соответствует регулярному выражению.
Например:
Pattern p = Pattern.compile("[\\d\\s\\(\\)\\-]+"); Matcher m = p.matcher(input); if(m.matches()) < System.out.println("\"" + input + "\" - OK"); >else
Теперь попробуем выделить код города (если он есть) из номера. Для этого составим еще одно регулярное выражение – » \\([\\d]+\\) «. Здесь мы задаем последовательность символов. Первой должна идти открывающая круглая скобка, за ней – одна или более цифр, после них – закрывающая круглая скобка.
Для того чтобы найти часть строки, которая соответствует этому выражению, можно воспользоваться методом find() класса Matcher . Этот метод возвращает true , если в исходной строке найдена заданная подстрока. Для того чтобы получить саму подстроку, нужно использовать метод group() .
Например:
Pattern codeP = Pattern.compile("\\([\\d]+\\)"); m = codeP.matcher(input); if(m.find())
Вы можете скачать демонстрационную программу для проверки телефонных номеров.
Разбивка строки на лексемы
В первую очередь разберемся, что такое лексемы. Это фрагменты строки, которые находятся между символами разделителями. Например, в обычном предложении, лексемы – это слова, а символы разделители – это пробелы между ними.
Вообще-то, для того, чтобы разбить предложение на слова использовать регулярные выражения не обязательно. Можно воспользоваться классом StringTokenizer из пакета java.util . В его конструкторе можно задать строку с разделителями, а затем в цикле с помощью метода nextToken() получить все лексемы.
Но, что делать, если разделителем служит сложный фрагмент, состоящий из смешанных данных? Рассмотрим конкретный пример. Допустим, у нас есть строка (или строки), которая содержит имена и даты рождения. Мы точно знаем, что после имени идет символ двоеточия, а дата состоит из какого-то набора цифр и дефисов. Имя может состоять из одного или нескольких слов.
Например:
Вова:2000-11-3Александр Петрович:1970-02-14Петя:1980-07-1Костя:1990-08-23
Нам нужно выделить все имена из строки. Для этого составим регулярное выражение, которое соответствует разделителю, т.е. символу двоеточия, за которым следует дата. У меня получилось такое выражение » :[\\d\\-]+ «. Первым идет двоеточие, за ним мы объявляем символьный класс, в который входят все цифры и дефис. Символы из этого класса могут встречаться один или более раз (знак + ). После этого мы можем воспользоваться методом split класса Pattern для получения массива строк с именами.
Код, выполняющий эти операции, будет выглядеть примерно так:
Pattern p = Pattern.compile(":[\\d\\-]+"); String[] tokens = p.split(input);
Как видите, получить лексемы с помощью класса Pattern значительно проще, чем, используя StringTokenizer .
Вы можете скачать программу, демонстрирующую работу этого метода.
Функция trim
Функция trim удаляет пробелы с начала и конца строки. Может также удалять другие символы, если их указать вторым параметром.
Синтаксис
trim(строка, [символы]);
Пример
Давайте удалим пробелы по краям строки:
Результат выполнения кода:
Пример
Давайте удалим слеши по краям строки:
Результат выполнения кода:
Пример
Давайте удалим слеши и точки по краям строки:
Результат выполнения кода:
Пример
Функция удаляет любое количество указанных символов, если они стоят с краю:
Результат выполнения кода:
Пример
Можно указать диапазон символов с помощью двух точек ‘..’ . К примеру, укажем, что мы хотим удалить символы от ‘a’ до ‘d’ :
Результат выполнения кода:
Смотрите также
- функцию ltrim ,
которая удаляет пробелы слева - функцию rtrim ,
которая удаляет пробелы справа
Как убрать пробел или один символ в конце переменной String?
Есть переменная к примеру public String s = «140.25 «; в конце в моем случае создается пробел как убрать чтобы было 140.25. Или как в конце отнять один символ.
Отслеживать
1,537 1 1 золотой знак 9 9 серебряных знаков 16 16 бронзовых знаков
задан 12 мар 2020 в 18:34
23 3 3 бронзовых знака
12 мар 2020 в 18:38
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
public class Main < public static void main(String[] args) < String s = "140.25 "; s = s.trim(); System.out.println(s); >>
Отслеживать
13.7k 12 12 золотых знаков 43 43 серебряных знака 75 75 бронзовых знаков
ответ дан 12 мар 2020 в 18:48
418 3 3 серебряных знака 18 18 бронзовых знаков
Когда ты работаешь со строками, лучше всего использовать StringBuffer
StringBuffer strBuffer = new StringBuffer("Твоя строка");
и в твоём случае substring-обрезка по символу
strBuffer.substring(strBuffer.length()-1);
или deleteCharAt-удаление символа
strBuffer.deleteCharAt(strBuffer.length()-1);
Удалить пробел из строки в Java
В этом посте будет обсуждаться, как удалить пробелы из строки в Java.
Символ называется пробельным символом в Java тогда и только тогда, когда Character.isWhitespace(char) метод возвращает истину. Наиболее часто используемые пробельные символы: \n, \t, \r и пространство. Шаблон регулярного выражения для пробельных символов: \s . Используя этот шаблон в регулярном выражении, мы можем либо заменить последовательные пробелы одним пробелом, либо удалить все пробелы из входной строки.
1. Замена последовательных пробелов одним пробелом
Идея состоит в том, чтобы использовать шаблон \s+ вместо \s для обработки двух или более последовательных пробелов во входной строке, как показано ниже:
