1. Sammenligning af strenge

En af de mest almindelige operationer med strenge er sammenligning. String-klassen har over ti forskellige metoder, der bruges til at sammenligne en streng med en anden streng. Nedenfor vil vi tage et kig på syv af de vigtigste.

Metoder Beskrivelse
boolean equals(String str)
Strenge betragtes som ens, hvis alle deres karakterer matcher.
boolean equalsIgnoreCase(String str)
Sammenligner strenge, ignorerer store og små bogstaver (ignorerer om de er store eller små)
int compareTo(String str)
Sammenligner strenge leksikografisk. Returnerer 0, hvis strengene er ens. Returværdien er mindre end nul, hvis den aktuelle streng er mindre end strengparameteren. Returværdien er større, end hvis den aktuelle streng er større end strengparameteren.
int compareToIgnoreCase(String str)
Sammenligner strenge leksikografisk, mens der ignoreres store og små bogstaver. Returnerer 0, hvis strengene er ens. Returværdien er negativ, hvis den aktuelle streng er mindre end strengparameteren. Returværdien er større, end hvis den aktuelle streng er større end strengparameteren.
boolean regionMatches(int toffset, String str, int offset, int len)
Sammenligner dele af strenge
boolean startsWith(String prefix)
Kontrollerer, om den aktuelle streng starter med strengenprefix
boolean endsWith(String suffix)
Kontrollerer, om den aktuelle streng slutter med strengensuffix

Lad os sige, at du vil skrive et program, der beder brugeren om en sti til en fil og derefter kontrollerer filtypen baseret på dens udvidelse. Koden for et sådant program kan se sådan ud:

Kode Noter
Scanner console = new Scanner(System.in);
String path = console.nextLine();

if (path.endsWith(".jpg") || path.endsWith(".jpeg"))
{
   System.out.println("This is a jpeg!");
}
else if (path.endsWith(".htm") || path.endsWith(".html"))
{
   System.out.println("This is an HTML page");
}
else if (path.endsWith(".doc") || path.endsWith(".docx"))
{
   System.out.println("This is a Word document");
}
else
{
   System.out.println("Unknown format");
}
Opret et Scannerobjekt
Læs en linje fra konsollen

Tjek om strengen pathslutter med den givne streng


2. Søgning efter understrenge

Efter at have sammenlignet strenge, er den næstmest populære operation at finde en streng inde i en anden. String-klassen har også et par metoder til dette:

Metoder Beskrivelse
int indexOf(String str)
Søger efter strengen stri den aktuelle streng. Returnerer indekset for det første tegn i den første forekomst.
int indexOf(String str, int index)
Søger efter strengen stri den aktuelle streng og springer de første indextegn over. Returnerer indekset for forekomsten.
int lastIndexOf(String str)
Søger efter strengen stri den aktuelle streng, startende fra slutningen. Returnerer indekset for den første forekomst.
int lastIndexOf(String str, int index)
Søger efter strengen stri den aktuelle streng fra slutningen og springer de første indextegn over.
boolean matches(String regex)
Kontrollerer, om den aktuelle streng matcher et mønster, der er angivet af et regulært udtryk.

Metoderne indexOf(String)og indexOf(String, index)bruges ofte i kombination. Den første metode lader dig finde den første forekomst af den beståede understreng i den aktuelle streng. Og den anden metode lader dig finde den anden, tredje, osv. forekomst ved at springe de første indekstegn over.

Antag, at vi har en url som " https://domain.com/about/reviews ", og vi ønsker at erstatte domænenavnet med " codegym.cc ". URL'er kan have alle mulige forskellige domænenavne, men vi kender følgende:

  • Domænenavnet er indledt af to skråstreger - " //"
  • Domænenavnet efterfølges af en enkelt skråstreg – " /"

Sådan ser koden til et sådant program ud:

Kode Noter
Scanner console = new Scanner(System.in);
String path = console.nextLine();

int index = path.indexOf("//");
int index2 = path.indexOf("/", index + 2);

String first = path.substring(0, index + 2);
String last = path.substring(index2);

String result = first + "codegym.cc" + last;
System.out.println(result);
Opret et scannerobjekt
Læs en linje fra konsollen

Hent indekset for den første forekomst af strengen " //"
Vi får indekset for den første forekomst af strengen /, men ser kun efter en forekomst af tegnene //.
Vi får strengen fra begyndelsen til slutningen af ​​tegnene //
Vi får strengen fra /til slutningen.

Vi sammenkæder strengene og det nye domæne.

Metoderne lastIndexOf(String)og lastIndexOf(String, index)fungerer på samme måde, kun søgningen udføres fra slutningen af ​​strengen til begyndelsen.



3. Oprettelse af understrenge

Ud over at sammenligne strenge og finde understrenge, er der en anden meget populær handling: at få en understreng fra en streng. Som det sker, viste det forrige eksempel dig et substring()metodekald, der returnerede en del af en streng.

Her er en liste over 8 metoder, der returnerer understrenge fra den aktuelle streng:

Metoder Beskrivelse
String substring(int beginIndex, int endIndex)
Returnerer den understreng, der er angivet af indeksområdet beginIndex..endIndex.
String repeat(int count)
Gentager den aktuelle streng n gange
String replace(char oldChar, char newChar)
Returnerer en ny streng: erstatter tegnet oldCharmed tegnetnewChar
String replaceFirst(String regex, String replacement)
Erstatter den første understreng, angivet af et regulært udtryk, i den aktuelle streng.
String replaceAll(String regex, String replacement)
Erstatter alle understrenge i den aktuelle streng, der matcher det regulære udtryk.
String toLowerCase()
Konverterer strengen til små bogstaver
String toUpperCase()
Konverterer strengen til store bogstaver
String trim()
Fjerner alle mellemrum i begyndelsen og slutningen af ​​en streng

Her er en oversigt over de tilgængelige metoder:

substring(int beginIndex, int endIndex)metode

Metoden substringreturnerer en ny streng, der består af tegn i den aktuelle streng, startende ved tegnet med indeks beginIndexog slutter ved endIndex. Som med alle intervaller i Java er tegnet med indeks endIndexikke inkluderet i intervallet. Eksempler:

Kode Resultat
"Hellos".substring(0, 3);
"Hel"
"Hellos".substring(1, 4);
"ell"
"Hellos".substring(1, 6);
"ellos"
"Hellos".substring(1);
"ellos"

Hvis endIndexparameteren ikke er angivet (hvilket er muligt), så tages understrengen fra karakter ved beginIndex til slutningen af ​​strengen.

repeat(int n)metode

Gentagelsesmetoden gentager simpelthen de aktuelle strengtider n. Eksempel:

Kode Resultat
"Hello".repeat(3);
"HelloHelloHello"
"Hello".repeat(2);
"HelloHello"
"Hello".repeat(1);
"Hello"
"Hello".repeat(0);
""

replace(char oldChar, char newChar)metode

Metoden replace()returnerer en ny streng, hvor alle tegn oldCharer erstattet med tegnet newChar. Dette ændrer ikke på længden af ​​strengen. Eksempel:

Kode Resultat
"Programming".replace('Z', 'z');
"Programming"
"Programming".replace('g', 'd');
"Prodrammind"
"Programming".replace('a', 'e');
"Progremming"
"Programming".replace('m', 'w');
"Prograwwing"

replaceFirst()og replaceAll()metoder

Metoden replaceAll()erstatter alle forekomster af en understreng med en anden. Metoden replaceFirst()erstatter den første forekomst af den beståede understreng med den angivne understreng. Den streng, der skal erstattes, er angivet af et regulært udtryk. Vi vil dykke ned i regulære udtryk i Java Multithreading- quest.

Eksempler:

Kode Resultat
"Good news everyone!".replaceAll("e.", "EX");
"Good nEXs EXEXyonEX"
"Good news everyone!".replaceAll("o.", "-o-");
"G-o-d news every-o-e!"
"Good news everyone!".replaceFirst("e.", "EX");
"Good nEXs everyone!"
"Good news everyone!".replaceFirst("o.", "-o-");
"G-o-d news everyone!"

toLowerCase() and toUpperCase()metoder

Vi lærte disse metoder at kende, da vi første gang lærte at kalde klassens metoder String.

trim()metode

Metoden trim()fjerner førende og efterfølgende mellemrum fra en streng. Rør ikke mellemrum, der er inde i en streng (dvs. ikke i begyndelsen eller slutningen). Eksempler:

Kode Resultat
"     ".trim();
""
"Hello".trim();
"Hello"
" Hello\n how are you?\n   ".trim();
"Hello\n how are you?\n"
"  Password\n   \n ".trim();
"Password\n   \n"