Excerpt |
---|
Tekst er en viktig type data, og Java inneholder mange klasser for å håndtere tekst. Her kan man lese litt om hva tekst er, hvordan det håndteres i Java og få en oversikt over nyttige tekst-relaterte metoder. |
Tekst er enkelt sagt en sekvens av tegn (bokstaver, tall, spesialtegn, ...). Java har en egen datatype for tegn kalt char, basert på Unicode-standarden for koding av tegn (se http://unicode.org/ og https://www.youtube.com/watch?v=IRdupNXpm8k for mer om Unicode) og en klasse for objekt-varianten kalt Character. Sistnevnte brukes mest ifm. med Collection-rammeverket og for å kalle metoder for å klassifisere tegn, f.eks. Character.isLowerCase(c) eller gjøre om til store eller små bokstaver, f.eks. Character.toUpperCase(c).
Det finnes flere klasser for sekvenser av tegn, og den vanligste er String-klassen, som det er spesiell støtte for å Java-språket
Har kan man finne teori om hvordan tekst håndteres i java.
På siden java.lang.String kan man lese mer om hva tekst er i java, og hvordan tekst bygges og endres. Dersom man skal bygge eller manipulere tekst over mange steg burde man ta en titt på siden java.lang.StringBuilder og java.lang.StringBuffer.større mengder på en effektiv måte så er StringBuilder og StringBuffer nyttige.
Når en jobber med tekst, har en ofte behov for å gjøre om teksten til andre datatyper, og alle objekt-klassene for de grunnleggende datatypene (boolean, int, double, osv.) har egne metoder for å konvertere fra tekst til dataverdi. F.eks. returnerer Integer.valueOf(string) tallet som string representerer.
Nyttige klasser og metoder for tekst-håndtering
Character
Klasse-/metodenavn | Beskrivelse | Eksempel |
---|---|---|
Character | Klasse som representerer ett tegn | |
Character.isDigit(c) | Returnerer true om c er et siffer, ellers false | Character.isDigit('0') returnerer true |
Character.isWhitespace(c) | Returnerer true om c er mellomrom, tab, linjeskift eller annet "blankt" tegn, ellers false | Character.isWhitespace('\n') returnerer true |
Character.isUpperCase(c) | Returnerer true om c er den store varianten av en bokstav, ellers false | Character.isUpperCase('A') returnerer true |
Object.toString() | Returnerer objekt (altså hva som helst) omgjort til tekst, brukes implisitt ved bruk av tekst og + | "0123".toString() returnerer "0123" |
String | Sekvens av tegn, kan ikke endres. | |
string.charAt(pos) | Returnerer tegnet i indeks pos i string | "0123".charAt(1) returnerer '1' |
string.substring(start) | Returnerer resten av string fra indeks start | "0123".substring(1) returnerer "123" |
string.substring(start, end) | Returnerer utsnittet av string fra og med start til (men ikke med) end | "0123".substring(1,3) returnerer "12" |
string.startsWith(prefix) | Returnerer true om string starter med prefix, ellers false | "0123".startsWith("01") returnerer true |
string.endsWith(prefix) | Returnerer true om string ender med prefix, ellers false | "0123".endsWith("3") returnerer true |
string.contains(sub) | Returnerer true om string inneholder sub (et eller annet sted). | "0123".contains("2") returnerer true |
string.indexOf(sub) | Returnerer indeksen til den første forekomsten av sub, eller -1 om den ikke finnes | "tralala".indexOf("la") returnerer 3 |
string.lastIndexOf(sub) | Returnerer indeksen til den siste forekomsten av sub, eller -1 om den ikke finnes | "tralala".lastIndexOf("la") returnerer 5 |
StringBuilder | Sekvens av tegn, som kan endres, ofte kalt et tekstbuffer. | |
StringBuilder.append(object) | Gjør om object til tekst og legger til teksten bakerst i bufferet. | |
StringBuilder.insert(index, object) | Gjør om object til tekst og skyter inn teksten på indeksen index. | |
StringBuilder.toString() | Returnerer innholdet i bufferet som en String | |
Boolean.valueOf(string) | Returnerer true om string er "true", ellers false | |
Integer.valueOf(string) | Returnere string konvertert til/tolket som et heltall (int) | Integer.valueOf("42") returnerer 42 |
Integer.valueOf(string, radix) | Returnere string konvertert til/tolket som et heltall (int) i tallsystemet radix | Integer.valueOf("42", 8) returnerer 34 |
Double.valueOf(string) | Returnere string konvertert/tolket som et desimaltall (double) | Double.valueOf("3.14") returnerer 3.14 |