Java : работа со строками. Тема занятия Простой поиск в строках: методы indexOf(), charAt(), matches(); Классы String, StringBuffer, StringBuilder; Выделение.

Презентация:



Advertisements
Похожие презентации
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Advertisements

СТРОКИ Работа со строками. Последовательность выполнения операторов int age = 45; String s = "Не is " + age + " years old."; age не String, а переменная.
Коллекции: алгоритмы, генерики. Приведение типов Предположения о типах объектов: void innerMethod( Object o ){ //Ошибка времени выполнения int val = (Integer)o;
Строки и классы-оболочки. Класс String. Конструкторы String s = new String(); char chars[] = { 'а', 'b', 'с' }; String s = new String(chars); char chars[]
Строки Класс String инкапсулирует действия со строками. Объект типа String – строка, состоящая из произвольного числа символов, от 0 до 2*10 9. Литерные.
JavaScript Регулярные выражения Введение Создание регулярных выражений Флаги (способы поиска по шаблону) Метасимволы Специальные символы Квантификаторы.
Скриптовые языки на примере Perl. Языки программирования Скриптовые Программа (или ее бай-код) интерпретируется Зачастую более высокий уровень абстрагирования.
Типы данных Инна Исаева. Переменные Переменная - это как ящик, в котором можно хранить данные. Каждая переменная имеет своё имя, она служит для хранения.
ВМП 1 АЛГОхитрости Типовые алгоритмические приёмы работы с символами и строками 1. Вывод на экран (печать) символа и его кода (номера в таблице ASCII).
Язык JavaScript Скриптовый язык для выполнения на html-страницах.
Test 6 Вопрос 1. Как можно уничтожить объект в Java? a)присвоить null всем ссылкам на объект b)вызвать Runtime.getRuntime().gc() c)вызвать метод finalize()
b5_java_s4
PHP PHP (Hypertext Preprocessor) Язык программирования общего назначения, применяемый для разработки веб-приложений.
СИНТАКСИС И УПРАВЛЯЮЩИЕ КОНСТРУКЦИИ JAVASCRIPT. Вставка скрипта. 1. В коде HTML-страницы … 2. Внешний файл.
Операции Условная операция ? : Если истинно, то результатом будет, иначе. Например, int x = a < b ? a : b вычисляет минимум из a и b.
Переменные и операторы УРОК 2. Переменные ПЕРЕМЕННАЯ – ?... контейнер для хранения данных. Переменная имеет имя – это….? последовательность букв, цифр.
Язык Java. JSP.. Java. Синтаксис. Перевод строчки эквивалентен пробелу Регистр в именах различается // Комментарии до конца строки /* Многострочные комментарии.
Лекция 2 Функции библиотек языка C. stdio.h Заголовочный файл стандартной библиотеки языка C. Содержит определения констант, объявления функций и типов.
JAVA, Кафедра ОСУ, АВТФ1 Работа со строками В пакет java.lang встроен класс, инкапсулирующий структуру данных, соответствующую строке. Класс.
RegExp Регуля́рные выраже́ния (англ. regular expressions, сокр. RegExp, RegEx, жарг. регэ́кспы или ре́гексы) это формальный язык поиска и осуществления.
Транксрипт:

Java : работа со строками

Тема занятия Простой поиск в строках: методы indexOf(), charAt(), matches(); Классы String, StringBuffer, StringBuilder; Выделение значащих элементов в строках: классы StringTokenizer, StreamTokenizer; Регулярные выражения: пакет java.util.regex.

Простой поиск в строках String s = Hello world!; int i = s.indexOf( w ); int j = s.indexOf( l, 5 ); //Вывод: Hello System.out.println( s.substring( 0, i ) ); //Вывод: ld! System.out.println( s.substring( j ) );

Простой поиск в строке String s = Hello world!; char toFind = o; int occCount = 0; for( int i = 0; i < s.length(); i++ ){ if( s.charAt(i) == toFind ) occCount++; } //Вывод: Char o found 2 times System.out.println( Char + toFind + found + occCount + times );

Методы класса String на основе классов java.util.regex boolean matches( String regexp ); String s = Hello world!; boolean bResult = s.matches(Hello.*); Аналог вызова: bResult = Pattern.matches( regexp, s ); String replaceAll( String regexp, String newString ); String s = Hello world!.replaceAll(Hello, great); Аналог вызова: String s = Pattern.compile(regexp).matcher(s).replaceAll(newString);

Классы String, StringBuffer, StringBuilder String s = a + b; StringBuffer sb = new StringBuffer(); sb.append( a ); sb.append( b ); StringBuilder эффективнее по быстродействию, но не позволяет работать с несколькими потоками.

Разбор строк Класс StringTokenizer Конструктор: public StringTokenizer( String str, String delim, boolean returnDelim ); Признак наличия элементов: boolean hasMoreTokens(); Выбрать следующий элемент: String nextToken();

String s = index.jsp?q=1&w=2&e=3&r=4; StringTokenizer st = new StringTokenizer( s, ?=&, true ); while( st.hasMoreTokens() ){ String token = st.nextToken(); System.out.println( token ); } StringTokenizer - пример Вывод: Index.jsp ? q = 1 & …

Класс StreamTokenizer Преимущества: -разбор комментариев; -разбор чисел; -подсчет строк (метод lineno()) -классификация символов по категориям: -буквенные символы; -числа (хранятся как double); -переносы строк; -конец файла (строки); -терминальные символы.

StreamTokenizer - пример StreamTokenizer st = new StreamTokenizer( new StringReader(s) ); st.resetSyntax(); st.wordChars('a', 'z'); st.wordChars('A', 'Z'); st.wordChars('0', '9'); st.wordChars('.', '.'); st.ordinaryChar('?'); st.ordinaryChar('='); st.ordinaryChar('&'); try{ while( st.ttype != StreamTokenizer.TT_EOF ){ st.nextToken(); if( st.ttype == StreamTokenizer.TT_WORD ) System.out.println( st.sval ); else if( st.ttype == StreamTokenizer.TT_NUMBER ) System.out.println( st.nval ); else if( st.ttype == '=' || st.ttype == '?' || st.ttype == '&' ) System.out.println( (char)st.ttype ); } }catch( IOException exc ){ exc.printStackTrace(); } Вывод: index.jsp ? q = 1 & …

Регулярные выражения Пакет java.util.regex Класс Pattern – используется для подготовки и хранения регулярного выражения в скомпилированном виде. Класс Matcher – используется для поиска и замены в строках на основе скомпилированного регулярного выражения. Синтаксис, поддерживаемый классами java.util.regex:

Шаблоны последовательностей в регулярных выражениях Шаблон Значение.Любой символ \d Число (аналогично выражению [0- 9]) \DНе число (аналогично выражению [^0-9]) \s Символы-пробелы (аналогично [\t\n\x0B\f\r]) \SНе пробелы ([^\s]) \w Буквенные символы и числа ([a-zA- Z0-9]) \WПоследовательности не относящиеся к буквенным символам и числам ([^\w])

Указание количества повторений Синтаксис Значение X?Выражение X встречается один раз или не встречается вообще. X*Выражение X встречается 0 и более раз X+Выражение X встречается 1 или более раз X{n}Выражение X встречается n раз X{n,}Выражение X встречается как минимум n раз X{n,m}Выражение X встречается минимум n и максимум m раз

Проверка границ выражений Выражение Значение ^Начало строки $Конец строки \b\b Граница слова \BПоследовательность внутри слова (не на границе) \AНачало последовательности \GМесто окончания предыдущего совпадения \Z\ZОкончание последовательности, кроме завершающего символа (напр. «конец файла») \z Окончание последовательности

Регулярные выражения - примеры //bResult = true boolean bResult = "hello world".matches("\\w+\\s\\w+"); //s = Hello hello hello String s = Helllllo helo helllo.replaceAll( [l]{1}|[l]{2,}, ll ); ); // = String ListLine = String = ListLine.replaceAll( \\A, );

Задание 1 Разработать программу для сравнения производительности формирования символьного буфера из символов с использованием: -конкатенации строк; -класса StringBuffer; -класса StringBuilder.

Задание 2 Разработать программу, проверяющую корректность указания URL для ftp-сервера. Формат URL следующий: Для проверки использовать регулярные выражения.