Práce s textem. Třída Character. Třída Character. Třída Character. reprezentuje objekty zapouzdřující hodnotu typu char (boxing / unboxing)

Podobné dokumenty
Úvod do programovacích jazyků (Java)

Textové soubory. alg9 1

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

Regulární výrazy. Vzory

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

1. Téma 12 - Textové soubory a výjimky

Principy objektově orientovaného programování

Algoritmizace a programování

9. přednáška - třídy, objekty

Abstraktní datové typy: zásobník

Soubor jako posloupnost bytů

Vytváření a použití knihoven tříd

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Typický prvek kolekce pro české řazení

KTE / ZPE Informační technologie

Datové struktury. alg12 1

Paměť počítače. alg2 1

1. Úvodní informace. BI-EP1 Efektivní programování Martin Kačer

Programovací jazyk Pascal

8. přednáška: Soubory a proudy

Java Výjimky Java, zimní semestr

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Jazyk C# a platforma.net

Úvod do programovacích jazyků (Java)

Neměnné objekty. Tomáš Pitner, upravil Marek Šabo

Algoritmizace a programování

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Programování v Javě I. Leden 2008

Programování v Javě I. Únor 2009

5. Ř etězce (třída String)

Semin aˇr Java V yjimky Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Unor 2008 Radek Koˇc ı Semin aˇr Java V yjimky 1/ 25

Zápis programu v jazyce C#

Java a XML. 10/26/09 1/7 Java a XML

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

7. Dynamické datové struktury

Úvod do programování - Java. Cvičení č.4

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

7. Datové typy v Javě

Java - výjimky. private void vstup() throws IOException {... }

Výčtový typ strana 67

Datové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12.

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Řetězce a řídicí struktury

3 KTE / ZPE Informační technologie

KTE / ZPE Informační technologie

Část 1 Soubory a vytvoření projektu. Řetězce a řídicí struktury. Část 2 Připomínka (NSD) Část 3 Textové řetězce, operátory a načítání vstupu

Konstruktory překladačů

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory

Řídicí struktury. alg3 1

Teoretické minimum z PJV

Datové typy strana 29

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Příkazy a řídicí struktury v Javě. Tomáš Pitner, upravil Marek Šabo

PREPROCESOR POKRAČOVÁNÍ

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Komponenty v.net. Obsah přednášky

PŘETĚŽOVÁNÍ OPERÁTORŮ

Algoritmizace a programování

typová konverze typová inference

Iterator & for cyklus

Java Řetězce Java, zimní semestr

Generické programování

NPRG030 Programování I, 2017/18 1 / :22:16

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Druhy souborů. textové. binární. nestrukturované txt strukturované - ini, xml, csv. veřejné bmp, jpg, wav proprietární docx, cdr, psd

Seminář Java II p.1/43

int t1, t2, t3, t4, t5, t6, t7, prumer; t1=sys.readint();... t7=sys.readint(); prume pru r = r = ( 1+t 1+t t3+ t3+ t4 t5+ t5+ +t7 +t7 )/ ;

Spojové struktury. Spojová struktura (linked structure):

Znaky. IAJCE Přednáška č. 10. každému znaku je nutné přiřadit nějaké číslo (nezáporné přímé mapování znak <->

InputStream. FilterInputStream

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

- jak udělat konstantu long int: L long velka = 78L;

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Spojové struktury. x, y, a, b. X1 y1 X2 y2 X3 y3. Grafické objekty bod. kružnice. obdélník. lomenáčára

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Třída jako zdroj funkcí

Stream API. Petr Krajča. Základy programovaní 4 (Java) Katedra informatiky Univerzita Palackého v Olomouci

KTE / ZPE Informační technologie

RMI Remote Method Invocation

Jazyk C# (seminář 5)

Java - řazení objektů

VISUAL BASIC. Práce se soubory

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

5 Rekurze a zásobník. Rekurzivní volání metody

Řetězce a řídicí struktury

Transkript:

Třída Character Práce s textem doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz reprezentuje objekty zapouzdřující hodnotu typu char (boxing / unboxing) Character cobj = new Character('x') char c = cobj.charvalue() zajímavé jsou zejména statické metody získání hodnoty číslice o daném základu int Character.digit(char ch, int radix) získání číslice o daném základu z číselné hodnoty char Character.forDigit(int digit, int radix) Práce s textem 2 Třída Character Testování kategorie znaků boolean Character.isXXX(char c) iswhitespace() isdigit() isletter() islowercase() isuppercase() isletterordigit() mezera, \t, \n, \r, \f, číslice písmeno malé velké písmeno nebo číslice Třída Character Převody písmen převod na velké písmeno char Character.toUpperCase(char ch) převod na malé písmeno char Character.toUpperCase(char ch) Práce s textem 3 Práce s textem 4 1

Příklad static int readint(reader rdr) throws IOException int ch = rdr.read(); while( Character.isWhitespace((char)ch) ) ch = rdr.read(); int val = 0; while( Character.isDigit((char)ch) ) val = 10 * val + Character.digit((char)ch, 10); ch = rdr.read(); return val; Práce s textem 5 nemodifikovatelný řetězec obsah lze pouze číst možnost sdílení stejných řetězců reprezentace pomocí UNICODE (16 bitů/znak) speciální třída konstanty řetězcové literály: aaa operátor + pro spojování řetězců: ab + c = abc automatická konverze operandů x= +1 == x=1 Práce s textem 6 Literály znaky v uvozovkách: abcdef řídicí a speciální znaky \n \r \t \b \f \ \ \\ číselné kódy znaků (osmičkově) \041 šestnáctkové kódy znaků UNICODE \u0021 Základní operace délka řetězce abcd.length() = 4 výběr znaku abcd.charat(2) = c výběr podřetězce abcd.substring(1,2) = bc abcd.substring(1) = bcd spojování řetězců abc.concat( def ) = abcdef převody Ab.toUpperCase() = AB Ab.toLowerCase() = ab String.valueOf(3.14) = 3.14 Práce s textem 7 Práce s textem 8 2

Porovnávání řetězců metoda equals() třídy Object s1.equals(s2) metoda compareto() rozhraní Comparable s1.compareto(s2) < 0 == 0 > 0 metoda comparetoignorecase() Ab.compareToIgnoreCase( Ba ) == 0 Vyhledávání v řetězcích vyhledání znaku abcd.indexof( c ) = 2 aabb.lastindexof( a ) = 1 vyhledání podřetězce abcd.indexof( bb ) = -1 aaaa.lastindexof( aa ) = 2 regulární výrazy f1x.match( [a-z][a-z0-9]* ) = true ab,c,def.split(, ) = String[] ab, c, def Práce s textem 9 Práce s textem 10 Příklad // převod řetězce desítkových číslic na číslo static int tointeger(string s) int val = 0; for( int i = 0; i < length(s); i++ ) char c = s.charat(i); val = val * 10 + (c- 0 ); return val; Buffer Hodnoty třídy String se nedají modifikovat, vždy vzniká nová instance StringBuffer modifikovatelná posloupnost znaků, délka se upravuje automaticky podle potřeby StringBuffer sb = new StringBuffer(); sb.append(cokoliv);... String str = sb.tostring(); Práce s textem 11 Práce s textem 12 3

Buffer Překlad operátoru + pro řetězce využívá StringBuffer: cena= + 4 + Kc new StringBuffer(). append( cena= ). append(4). append( Kc ) Základní metody length(), charat(), indexof(), substring(), setcharat() append(), insert(), delete() Příklad static String frominteger(int val) StringBuffer sb = new StringBuffer(); do sb.append((char)(val % 10 + '0')); val /= 10; while( val!= 0 ); return sb.reverse().tostring(); Práce s textem 13 Práce s textem 14 Formátování čísel Třída java.text.decimalformat formátování celých čísel DecimalFormat fmt = new DecimalFormat("000"); fmt.format(12) = "012" formátování čísel v pohyblivé čárce DecimalFormat fmt = new DecimalFormat("0.00"); fmt.format(3.14159) = "3,14" Analýza textu Třída java.util.stringtokenizer umožňuje rozdělit řetězec na podřetězce podle zadaných oddělovačů StringTokenizer st = new StringTokenizer(str, delim) str: analyzovaný řetězec delim: řetězec obsahující oddělovače (není-li zadán, bere se " \t\n\r\f") zpracování probíhá v cyklu while( st.hasmoretokens() ) String t = st.nexttoken(); Práce s textem 15 Práce s textem 16 4

Příklad // součet čísel zadaných ve tvaru "1,3,2,9" static int soucet(string cisla) StringTokenizer st = new StringTokenizer(cisla, ","); int val = 0; while( st.hasmoretokens() ) String cislo = st.nexttoken(); val += Integer.parseInt(cislo); return val; Práce s textem 17 Úkol Vytvořte třídu reprezentující řetězce jako pole znaků s pevnou maximální délkou. Pro takto definované řetězce realizujte základní funkce definované na přednášce. public class Retezec public Retezec(int maxdelka) text = new char[maxdelka]; public int length() return aktualnidelka;... private int aktualnidelka; private char[] text; Práce s textem 18 Řešení předchozího úkolu č. 1 public static void main(string[] args) BufferedReader rdr; try if( args.length == 0 ) rdr = new BufferedReader( new InputStreamReader(System.in)); else rdr = new BufferedReader( new FileReader(args[0])); //... zpracování dat... (další stránka) catch( IOException e ) System.err.println("Chyba: " + e); Řešení předchozího úkolu č. 1 // zpracování dat opis textu s očíslováním řádků DecimalFormat fmt = new DecimalFormat("0000: "); String radek; int cislo = 1; while( (radek = rdr.readline())!= null ) System.out.println(fmt.format(cislo) + radek); cislo++; Práce s textem 19 Práce s textem 20 5

Řešení předchozího úkolu č. 2 public static void main(string[] args) // čtení ze standardního vstupu BufferedReader rdr = new BufferedReader( new InputStreamReader(System.in)); try // zpracování souboru (další stránka) catch( Exception e ) // nastane-li chyba, vypíšeme aktuální stav e.printstacktrace(); Práce s textem 21 Řešení předchozího úkolu č. 2 String radek; boolean prvni = true; int nejmensi = 0; int nejvetsi = 0; while ( (radek = rdr.readline())!= null) int cislo = Integer.parseInt(radek); if( první ) nejmensi = nejvetsi = cislo; prvni = false; else if( cislo > nejvetsi ) nejvetsi = cislo; if( cislo < nejmensi ) nejmensi = cislo; System.out.println("Nejmensi = " + nejmensi); System.out.println("Nejvetsi = " + nejvetsi); Práce s textem 22 6