Скачать презентацию Java 7 Регулярные выражения Интернационализация 1 Регулярное Скачать презентацию Java 7 Регулярные выражения Интернационализация 1 Регулярное

6c39d7c5bd4fc8cc18f13aa73ea4d564.ppt

  • Количество слайдов: 23

Java 7. Регулярные выражения Интернационализация 1 Java 7. Регулярные выражения Интернационализация 1

Регулярное выражение - шаблон для описания набора строк, соответствующих этому шаблону. a string a Регулярное выражение - шаблон для описания набора строк, соответствующих этому шаблону. a string a longer string a much longer string Каждая из этих строк начинается с «a» и заканчивается «string» Java Regular Expression (regex) API предназначено для описания шаблонов поиска соответствий выполнения различных действий с результатами Regex-возможности языка Java базируются на трех основных классах пакета java. util. regex: Pattern, описывающий строковый шаблон. Matcher, проверяющий строку на соответствие шаблону. Pattern. Syntax. Exception, который указывает на ошибку в описании шаблона 2

Специальные символы regex-шаблон описывает структуру строки, которую Matcher будет пытаться найти во входной строке. Специальные символы regex-шаблон описывает структуру строки, которую Matcher будет пытаться найти во входной строке. Для создания сложных выражений используются специальные символы (метасимволы) ( [ { ^ $ | ) ? * +. При необходимости использовать эти символы в выражении в их обычном значении перед этим символом ставят Если регулярное выражение записано в программе, а не читается из файла или формы, то необходимо использовать два символа подряд (\) 3

Основные логические конструкции [abc] a, b или c [^abc] символ, исключая a, b и Основные логические конструкции [abc] a, b или c [^abc] символ, исключая a, b и c [a-z] символ между a и z [a-d[m-p]] либо между a и d, либо между m и p [e-z&&[dem]] e либо m (конъюнкция) 4

Предопределенные классы символов. Любой символ d Любая цифра [0 -9] D Любой символ, отличный Предопределенные классы символов. Любой символ d Любая цифра [0 -9] D Любой символ, отличный от цифры [^0 -9] s Любой символ-разделитель [ tnx 0 Bfr] S Любой символ, отличный от символов-разделителей [^s] w Любой символ слова [a-z. A-Z_0 -9] W Любой символ, отличный от символов слова [^w] p{java. Lower. Case} ~ Character. is. Lower. Case() p{java. Upper. Case} ~ Character. is. Upper. Case() 5

Логические операции ab после a следует b a|b a либо b (a) a 6 Логические операции ab после a следует b a|b a либо b (a) a 6

Квантификаторы a? a один раз или ни разу a* a ноль или более раз Квантификаторы a? a один раз или ни разу a* a ноль или более раз a+ a один или более раз a{n} a n раз a{n, } a n или более раз a{n, m} a от n до m раз ? слабое, или неполное совпадение + «жадное» , или собственное совпадение 7

Класс Pattern: методы Pattern compile(String regex) возвращает Pattern, который соответствует regex Matcher matcher(Char. Sequence Класс Pattern: методы Pattern compile(String regex) возвращает Pattern, который соответствует regex Matcher matcher(Char. Sequence input) возвращает Matcher, с помощью которого можно находить соответствия в строке input boolean matches(String regex, Char. Sequence input) проверяет на соответствие строки input шаблону regex String pattern() возвращает строку, соответствующую шаблону String[ ] split(Char. Sequence input) разбивает строку input, учитывая, что разделителем является шаблон String[ ] split(Char. Sequence input, int limit) разбивает строку input на не более чем limit частей example 10 : проверка на соответствие шаблону Demo. Regex. java 8

Класс Matcher l С помощью метода matches() класса Pattern можно проверять целую строку на Класс Matcher l С помощью метода matches() класса Pattern можно проверять целую строку на соответствие шаблону l Если необходимо найти соответствия внутри строки, например, определять участки, которые соответствуют шаблону, то необходимо использовать класс Matcher Pattern p = Pattern. compile("cat"); Matcher m = p. matcher("one cat two cats in the yard"); Получение объекта Matcher 9

Класс Matcher: методы boolean matches() проверяет, соответствует ли вся строка шаблону boolean looking. At() Класс Matcher: методы boolean matches() проверяет, соответствует ли вся строка шаблону boolean looking. At() пытается найти последовательность символов, начинающуюся с начала строки и соответствующую шаблону boolean find() boolean find(int start) пытается найти последовательность символов, соответствующих шаблону, в любом месте строки параметр start указывает на начальную позицию поиска example 11 : обработка строк с помощью шаблонов Demo. Regular. java 10

Класс Matcher: методы reset(), reset(Char. Sequence input) сбросить состояние Matcher’а в исходное также устанавливает Класс Matcher: методы reset(), reset(Char. Sequence input) сбросить состояние Matcher’а в исходное также устанавливает новую последовательность символов для поиска replace. All(String replacement) замена всех подпоследовательностей символов, удовлетворяющих шаблону, на заданную строку region(int start, int end) ограничить поиск границами входной последовательности region. End(), region. Start() получение значения границ Matcher use. Anchoring. Bounds( boolean b) если установлен в true, то начало и конец региона соответствуют символам ^ и $ соответственно boolean has. Anchoring. Bounds() проверяет закрепленность границ example 12 : Matcher. Use. java 11

Группы l l В регулярном выражении для более удобной обработки входной последовательности применяются группы, Группы l l В регулярном выражении для более удобной обработки входной последовательности применяются группы, которые помогают выделить части найденной подпоследовательности. В шаблоне они обозначаются скобками “(“ и “)”. Номера групп начинаются с единицы. Нулевая группа совпадает со всей найденной подпоследовательностью. 12

Класс Matcher: методы для извлечения информации о группах int end() возвращает индекс последнего символа Класс Matcher: методы для извлечения информации о группах int end() возвращает индекс последнего символа подпослед-ти, соотв. шаблону int end(int group) возвращает индекс последнего символа указанной группы String group() возвращает всю подпослед-ть, соотв. шаблону String group(int group) возвращает конкретную группу int group. Count() возвращает количество групп int start() возвращает индекс первого символа подпослед-ти, соотв. шаблону int start(int group) возвращает индекс первого символа указанной группы boolean hit. End() возвращает истину, если был достигнут конец входной последовательности example 13 : группы и квантификаторы Groups. java 13

Класс Matcher: методы замены Matcher append. Replacement(String. Buffer sb, String repl) l l l Класс Matcher: методы замены Matcher append. Replacement(String. Buffer sb, String repl) l l l Читает символы из входной стоки и добавляет их в sb. Чтение останавливается на start()-1 позиции предыдущего совпадения, после чего происходит добавление в sb строки repl. При следующем вызове этого метода производится добавление символов, начиная с символа с индексом end() предыдущего совпадения. String. Buffer append. Tail(String. Buffer sb) l l Добавляет оставшуюся часть символов из входной последовательности в sb. Как правило, вызывается после одного или нескольких вызовов метода append. Replacement(). example 14 : замена подстроки Replace. java 14

Интернационализация текста Класс java. util. Locale позволяет учесть особенности региональных представлений алфавита, символов и Интернационализация текста Класс java. util. Locale позволяет учесть особенности региональных представлений алфавита, символов и проч. Автоматически виртуальная машина использует текущие региональные установки операционной системы, при необходимости их можно изменять. Для некоторых стран региональные параметры устанавливаются с помощью констант: Locale. US, Locale. FRANCE. Для других стран объект Locale нужно создавать с помощью конструктора: Locale my. Locale = new Locale("bel", "BY"); Получить доступ к текущему варианту региональных параметров можно: Locale current = Locale. get. Default(); example 15 : методы Licale Locale. Ex. java 15

Классы Resource. Bundle и Locale l l l Класс Resource. Bundle предназначен в первую Классы Resource. Bundle и Locale l l l Класс Resource. Bundle предназначен в первую очередь для работы с текстовыми файлами свойств (расширение. properties) Каждый файл. properties должен соответствовать определенному объекту Locale Каждый объект Resource. Bundle представляет собой набор объектов соответствующих подтипов, которые разделяют одно и то же базовое имя Доступ к базовому имени можно получить через поле parent Базовое имя – основа названия файла. properties text_ru. properties text_de_CH. properties text_en_CA_UNIX. properties 16

Файл. property Состоит из пар ключ = значение Labels. Bundle. properties # This is Файл. property Состоит из пар ключ = значение Labels. Bundle. properties # This is the default Labels. Bundle. properties file s 1 = computer s 2 = disk s 3 = monitor s 4 = keyboard Labels. Bundle_de. properties # This is the Labels. Bundle_de. properties file s 1 = Computer s 2 = Platte s 3 = Monitor s 4 = Tastatur 17

Основные шаги 1. Создание файлов. properties по умолчанию и дополнительных Labels. Bundle. properties Labels. Основные шаги 1. Создание файлов. properties по умолчанию и дополнительных Labels. Bundle. properties Labels. Bundle_de. properties Labels. Bundle_fr. properties 2. Создание объектов Locale (или использование констант) Locale[ ] supported. Locales = { Locale. FRENCH, Locale. GERMAN, Locale. ENGLISH }; 3. Создание объекта Resource. Bundle labels = Resource. Bundle. get. Bundle("Labels. Bundle", current. Locale); 4. Получение текста, соответствующего выбранной локали String value = labels. get. String(key); example 16 : поддержка различных языков Hamlet. International. java 18

Перечисление всех ключей в виде Enumeration<String> можно получить вызовом метода get. Keys(). Конкретное значение Перечисление всех ключей в виде Enumeration можно получить вызовом метода get. Keys(). Конкретное значение по ключу извлекается методом String get. String(String key). Resource. Bundle labels = Resource. Bundle. get. Bundle("Labels. Bundle", current. Locale); Enumeration bundle. Keys = labels. get. Keys(); while (bundle. Keys. has. More. Elements()) { String key = (String)bundle. Keys. next. Element(); String value = labels. get. String(key); System. out. println("key = " + key + ", " + "value = " + value); } 19

Интернационализация чисел Применяются возможности класса java. text. Number. Format 1. Следует задать или получить Интернационализация чисел Применяются возможности класса java. text. Number. Format 1. Следует задать или получить текущий объект Locale с шаблонами регионального стандарта 2. Создать с помощью объекта Locale объект форматирования Number. Format. 3. Для преобразования строки в число и обратно используются методы l Number parse(String source) l String format(double number) example 17 : региональные представления чисел Demo. Number. Format. java 20

Интернационализация дат Применяются возможности класса java. text. Date. Format С его помощью учтены: l Интернационализация дат Применяются возможности класса java. text. Date. Format С его помощью учтены: l необходимость представления месяцев и дней недели нанациональном языке l специфические последовательности в записи даты и часовых поясов l возможности использования различных календарей Получение объекта, отвечающего за обработку регионального стандарта даты, аналогично числам: Date. Format df = Date. Format. get. Date. Instance(Date. Format. MEDIUM, new Locale("BY")); или по умолчанию: Date. Format. get. Date. Instance(); 21

Константы и методы преобразования Константы Date. Format l l l MEDIUM – будут представлены Константы и методы преобразования Константы Date. Format l l l MEDIUM – будут представлены только дата и время без указания часового пояса. LONG и FULL – используются для указания часового пояса SHORT – применяется для сокращенной записи даты, где месяц представлен в виде своего порядкового номера. Для получения даты в виде строки для заданного региона используется метод String format(Date date) в виде: String dat = df. format(new Date()); С помощью метода Date parse(String source) можно преобразовать переданную в виде строки дату в объектное представление конкретного регионального формата: String str = "April 3, 2006"; Date d = df. parse(str); example 18 : региональные представления дат Demo. Date. Format. java 22

Ключевые моменты l l l l Регулярное выражение - шаблон для описания набора строк Ключевые моменты l l l l Регулярное выражение - шаблон для описания набора строк Для работы с regex в java используются классы пакета java. util. regex (Pattern, Matcher, …) Для задания шаблона используются l синтаксические правила, l переопределенные классы символов, l логические операции l и квантификаторы С помощью метода matches() класса Pattern можно проверять целую строку на соответствие шаблону. Если необходимо найти соответствия внутри строки, то необходимо использовать класс Matcher Для получения объекта Matcher используются специальные методы Для интернационализации текста используются классы Resource. Bundle и Locale Для интернационализации чисел - java. text. Number. Format Дат - java. text. Date. Format 23