Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 8 лет назад пользователемДарья Черевина
1 Java : работа со строками
2 Тема занятия Простой поиск в строках: методы indexOf(), charAt(), matches(); Классы String, StringBuffer, StringBuilder; Выделение значащих элементов в строках: классы StringTokenizer, StreamTokenizer; Регулярные выражения: пакет java.util.regex.
3 Простой поиск в строках 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 ) );
4 Простой поиск в строке 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 );
5 Методы класса 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);
6 Классы String, StringBuffer, StringBuilder String s = a + b; StringBuffer sb = new StringBuffer(); sb.append( a ); sb.append( b ); StringBuilder эффективнее по быстродействию, но не позволяет работать с несколькими потоками.
7 Разбор строк Класс StringTokenizer Конструктор: public StringTokenizer( String str, String delim, boolean returnDelim ); Признак наличия элементов: boolean hasMoreTokens(); Выбрать следующий элемент: String nextToken();
8 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 & …
9 Класс StreamTokenizer Преимущества: -разбор комментариев; -разбор чисел; -подсчет строк (метод lineno()) -классификация символов по категориям: -буквенные символы; -числа (хранятся как double); -переносы строк; -конец файла (строки); -терминальные символы.
10 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 & …
11 Регулярные выражения Пакет java.util.regex Класс Pattern – используется для подготовки и хранения регулярного выражения в скомпилированном виде. Класс Matcher – используется для поиска и замены в строках на основе скомпилированного регулярного выражения. Синтаксис, поддерживаемый классами java.util.regex:
12 Шаблоны последовательностей в регулярных выражениях Шаблон Значение.Любой символ \d Число (аналогично выражению [0- 9]) \DНе число (аналогично выражению [^0-9]) \s Символы-пробелы (аналогично [\t\n\x0B\f\r]) \SНе пробелы ([^\s]) \w Буквенные символы и числа ([a-zA- Z0-9]) \WПоследовательности не относящиеся к буквенным символам и числам ([^\w])
13 Указание количества повторений Синтаксис Значение X?Выражение X встречается один раз или не встречается вообще. X*Выражение X встречается 0 и более раз X+Выражение X встречается 1 или более раз X{n}Выражение X встречается n раз X{n,}Выражение X встречается как минимум n раз X{n,m}Выражение X встречается минимум n и максимум m раз
14 Проверка границ выражений Выражение Значение ^Начало строки $Конец строки \b\b Граница слова \BПоследовательность внутри слова (не на границе) \AНачало последовательности \GМесто окончания предыдущего совпадения \Z\ZОкончание последовательности, кроме завершающего символа (напр. «конец файла») \z Окончание последовательности
15 Регулярные выражения - примеры //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, );
16 Задание 1 Разработать программу для сравнения производительности формирования символьного буфера из символов с использованием: -конкатенации строк; -класса StringBuffer; -класса StringBuilder.
17 Задание 2 Разработать программу, проверяющую корректность указания URL для ftp-сервера. Формат URL следующий: Для проверки использовать регулярные выражения.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.