Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
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. Dersom man skal bygge eller manipulere 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-/metodenavnBeskrivelseEksempel
CharacterKlasse som representerer ett tegn 
Character.isDigit(c)Returnerer true om c er et siffer, ellers falseCharacter.isDigit('0') returnerer true
Character.isWhitespace(c)Returnerer true om c er mellomrom, tab, linjeskift eller annet "blankt" tegn, ellers falseCharacter.isWhitespace('\n') returnerer true
Character.isUpperCase(c)Returnerer true om c er den store varianten av en bokstav, ellers falseCharacter.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"
StringSekvens av tegn, kan ikke endres. 
String.valueOf(value-or-object-ref)

Returnerer en String-representasjon av det du sender inn. Dersom det er et objekt

brukes object-ref.toString() metoden fra objektet.

String.valueOf(2) returnerer "2"
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
StringBuilderSekvens 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 radixInteger.valueOf("42", 8) returnerer 34
Double.valueOf(string)Returnere string konvertert/tolket som et desimaltall (double)Double.valueOf("3.14") returnerer 3.14