Когда пользователь компьютера вводит текст с помощью терминала или поля ввода текста окна, полезной фразе может предшествовать и/или следовать пробел. Пробелы, записанные как пробелы (для краткости), представляют собой одну или несколько из следующих escape-последовательностей, встречающихся последовательно:
‘ ‘ or ‘\u0020′: space by pressing spacebar key
‘\n‘: line feed
‘\r‘: carriage return
‘f’: form feed
‘\t‘: horizontal tab
В большом тексте определенные обязательные фразы должны начинаться и/или заканчиваться пробелами. Когда такая фраза извлекается, она может содержать начальные и/или конечные пробелы. Независимо от того, как получена полезная фраза, начальные или конечные пробелы должны быть удалены, чтобы фраза использовалась правильно.
В пакете java.lang есть класс string. Этот строковый класс имеет метод под названием trim(). Метод trim() удаляет начальный и/или конечный пробел из строки. Он возвращает строку с удаленными начальными и/или конечными пробелами.
В Java строковый класс не нужно импортировать; он импортируется автоматически. Чтобы использовать строковый класс в коде, строковый класс должен быть набран как «String» с первой буквой в верхнем регистре.
Демонстрация эффекта пробелов
Начальные и/или конечные пробелы могут быть неприятными. Скомпилируйте и запустите следующую программу:
class TheClass {
public static void main(String[] args) {
String str = » \t\n\r\fuseful part \t\n\r\f«;
System.out.println(str);
}
}
В компьютере автора «полезная часть» печаталась с пустыми строками сверху и снизу.
Использование метода trim()
Метод trim() прост в использовании. Синтаксис:
public String trim()
Следующая программа иллюстрирует его использование:
class TheClass {
public static void main(String[] args) {
String str = » \t\n\r\fuseful part \t\n\r\f«;
String ret = str.trim();
System.out.println(ret);
}
}
Результат:
useful part
без каких-либо начальных или конечных пробелов.
Обработка ввода из консоли
В Java есть несколько способов ввода данных с клавиатуры в программу. Один из способов использует класс Scanner. Класс Scanner находится в пакете java.util. Следующая программа показывает, как ввести строку с клавиатуры в программу:
import java.util.Scanner;
public class TheClass {
public static void main(String[] args) {
Scanner obj = new Scanner(System.in);
System.out.println(«Type a phrase and press Enter:»);String phrase = obj.nextLine();
System.out.println(phrase);obj.close();
}
}
Первая строка программы импортирует класс Scanner. После этого идет определение основного класса (реализация). Основной класс имеет метод main. В методе main() первый оператор создает экземпляр объекта сканера. Следующий оператор выводит текст на консоль, предлагая пользователю ввести фразу. В этот момент программа ждет, пока пользователь введет фразу.
Следующий оператор считывает строку ввода в переменную фразу. Следующий оператор в методе main() повторно отображает эту фразу в том виде, в каком она была введена, со всеми начальными или конечными пробелами. Последний оператор в методе main() закрывает объект сканера.
Начальные или конечные пробелы обычно не требуются при вводе с клавиатуры. Их просто удалить; просто используя метод trim() строкового объекта. Следующая программа иллюстрирует это:
import java.util.Scanner;
public class TheClass {
public static void main(String[] args) {
Scanner obj = new Scanner(System.in);
System.out.println(«Type a phrase and press Enter:»);
String phrase = obj.nextLine();String str = phrase.trim();
System.out.println(str);
obj.close();
}
}
Начальные или конечные пробелы, набранные с помощью клавиши пробела, были удалены.
Обрезка с помощью регулярного выражения
С регулярным выражением Java нет необходимости использовать метод trim(). Регулярное выражение — это выражение, основным компонентом которого является шаблон. Шаблон представляет собой строку со строковыми метасимволами. Шаблон идентифицирует подстроку с определенными символами в целевой строке. Такая подстрока, идентифицированная в целевой строке, может быть заменена. Регулярное выражение — это конструкция, содержащая шаблон.
Целевая строка может быть входной строкой, считанной с клавиатуры. Подстрока, которую следует идентифицировать в этом разделе, — это начальный и/или конечный пробел. Помните, что этот пробел состоит из одного или нескольких различных пробельных символов, упомянутых выше. Когда этот пробел находится в начале или в конце целевой строки, он ничем не заменяется.
Шаблон для этого пробела — [\u0020\t\n\r\f]* или \s*. \s означает [\u0020\t\n\r\f]. Регулярное выражение для сопоставления начального или конечного пробела:
«^[ |\t|\n|\r|\f]*|[ |\t|\n|\r|\f]*$»
Класс string имеет метод replaceAll(), который можно использовать для удаления начального и конечного пробела из целевой строки. В следующей программе rawStr — это строка с пробелами. В этой строке два слова: «один» и «два». Есть пробелы перед «один», после «два» и между «один» и «два». Программа успешно удаляет начальные и конечные пробелы, а не пробелы между «один» и «два». FineStr — это строковая переменная без начальных и конечных пробелов. Первым аргументом replaceAll() является регулярное выражение. Второй аргумент — это замена, которая в данном случае представляет собой пустую строку (даже без пробела). Программа:
public class TheClass {
public static void main(String[] args) {
String rawStr = » \t\n\r\fone \t\n\r\ftwo \t\n\r\f«;String refinedStr = rawStr.replaceAll(«^[ |\t|\n|\r|\f]*|[ |\t|\n|\r|\f]*$», «»);
System.out.println(refinedStr);
}
}
Так что на выходе между «один» и «два» будет пустая строка.
Заключение
Обрезка строки означает удаление начальных и конечных пробелов. Пробел здесь состоит из одного или нескольких из ’ ’ или \t или \n или \r или \f. Любая комбинация этих символов в тексте не удаляется. Лучший способ удалить начальный и конечный пробелы из строки — использовать метод trim() класса string. Класс string также имеет метод replaceAll(), который можно использовать для обрезки. Однако метод replaceAll() требует знаний и опыта в использовании методов регулярных выражений, как показано выше. Первым аргументом replaceAll() является регулярное выражение; второй аргумент — текст замены, который в данном случае должен быть.