1. Jämföra strängar

En av de vanligaste operationerna med strängar är jämförelse. Klassen String har över tio olika metoder som används för att jämföra en sträng med en annan sträng. Nedan ska vi ta en titt på sju av de viktigaste.

Metoder Beskrivning
boolean equals(String str)
Strängar anses vara lika om alla deras karaktärer matchar.
boolean equalsIgnoreCase(String str)
Jämför strängar, ignorerar skiftläge för bokstäver (ignorerar om de är stora eller små bokstäver)
int compareTo(String str)
Jämför strängar lexikografiskt. Returnerar 0 om strängarna är lika. Returvärdet är mindre än noll om den aktuella strängen är mindre än strängparametern. Returvärdet är större än om den aktuella strängen är större än strängparametern.
int compareToIgnoreCase(String str)
Jämför strängar lexikografiskt och ignorerar skiftläge. Returnerar 0 om strängarna är lika. Returvärdet är negativt om den aktuella strängen är mindre än strängparametern. Returvärdet är större än om den aktuella strängen är större än strängparametern.
boolean regionMatches(int toffset, String str, int offset, int len)
Jämför delar av strängar
boolean startsWith(String prefix)
Kontrollerar om den aktuella strängen börjar med strängenprefix
boolean endsWith(String suffix)
Kontrollerar om den aktuella strängen slutar med strängensuffix

Låt oss säga att du vill skriva ett program som ber användaren om en sökväg till en fil och sedan kontrollerar filtypen baserat på dess tillägg. Koden för ett sådant program kan se ut ungefär så här:

Koda Anteckningar
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");
}
Skapa ett Scannerobjekt
Läs en rad från konsolen

Kontrollera om strängen pathslutar med den givna strängen


2. Söka efter delsträngar

Efter att ha jämfört strängar är den näst mest populära operationen att hitta en sträng inuti en annan. Klassen String har också några metoder för detta:

Metoder Beskrivning
int indexOf(String str)
Söker efter strängen stri den aktuella strängen. Returnerar indexet för det första tecknet i den första förekomsten.
int indexOf(String str, int index)
Söker efter strängen stri den aktuella strängen och hoppar över de första indextecknen. Returnerar index för förekomsten.
int lastIndexOf(String str)
Söker efter strängen stri den aktuella strängen, med början från slutet. Returnerar indexet för den första förekomsten.
int lastIndexOf(String str, int index)
Söker efter strängen stri den aktuella strängen från slutet och hoppar över de första indextecknen.
boolean matches(String regex)
Kontrollerar om den aktuella strängen matchar ett mönster som anges av ett reguljärt uttryck.

Metoderna indexOf(String)och indexOf(String, index)används ofta i kombination. Den första metoden låter dig hitta den första förekomsten av den skickade delsträngen i den aktuella strängen. Och den andra metoden låter dig hitta den andra, tredje, etc. förekomsten genom att hoppa över de första indextecknen.

Anta att vi har en url som " https://domain.com/about/reviews ", och vi vill ersätta domännamnet med " codegym.cc ". Webbadresser kan ha alla möjliga olika domännamn, men vi vet följande:

  • Domännamnet föregås av två snedstreck – " //"
  • Domännamnet följs av ett enda snedstreck — " /"

Så här skulle koden för ett sådant program se ut:

Koda Anteckningar
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);
Skapa ett skannerobjekt
Läs en rad från konsolen

Hämta indexet för den första förekomsten av strängen " " //Vi
får indexet för den första förekomsten av strängen , /men ser bara efter en förekomst av tecknen //.
Vi får strängen från början till slutet av tecknen //
Vi får strängen från /till slutet.

Vi sammanfogar strängarna och den nya domänen.

Metoderna lastIndexOf(String)och lastIndexOf(String, index)fungerar på samma sätt, endast sökningen utförs från slutet av strängen till början.



3. Skapa delsträngar

Förutom att jämföra strängar och hitta delsträngar finns det en annan mycket populär åtgärd: att hämta en delsträng från en sträng. Som det händer visade det föregående exemplet dig ett substring()metodanrop som returnerade en del av en sträng.

Här är en lista med 8 metoder som returnerar delsträngar från den aktuella strängen:

Metoder Beskrivning
String substring(int beginIndex, int endIndex)
Returnerar delsträngen som anges av indexintervallet beginIndex..endIndex.
String repeat(int count)
Upprepar den aktuella strängen n gånger
String replace(char oldChar, char newChar)
Returnerar en ny sträng: ersätter tecknet oldCharmed tecknetnewChar
String replaceFirst(String regex, String replacement)
Ersätter den första delsträngen, specificerad av ett reguljärt uttryck, i den aktuella strängen.
String replaceAll(String regex, String replacement)
Ersätter alla delsträngar i den aktuella strängen som matchar det reguljära uttrycket.
String toLowerCase()
Konverterar strängen till gemener
String toUpperCase()
Konverterar strängen till versaler
String trim()
Tar bort alla mellanslag i början och slutet av en sträng

Här är en sammanfattning av de tillgängliga metoderna:

substring(int beginIndex, int endIndex)metod

Metoden substringreturnerar en ny sträng som består av tecken i den aktuella strängen, som börjar med tecknet med index beginIndexoch slutar på endIndex. Som med alla intervall i Java ingår inte tecknet med index endIndexi intervallet. Exempel:

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

Om endIndexparametern inte är specificerad (vilket är möjligt), så tas delsträngen från tecken vid beginIndex till slutet av strängen.

repeat(int n)metod

Upprepningsmetoden upprepar helt enkelt de aktuella strängtiderna n. Exempel:

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

replace(char oldChar, char newChar)metod

Metoden replace()returnerar en ny sträng där alla tecken oldCharersätts med tecknet newChar. Detta ändrar inte längden på strängen. Exempel:

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

replaceFirst()och replaceAll()metoder

Metoden replaceAll()ersätter alla förekomster av en delsträng med en annan. Metoden replaceFirst()ersätter den första förekomsten av den skickade delsträngen med den angivna delsträngen. Strängen som ska ersättas anges av ett reguljärt uttryck. Vi kommer att fördjupa oss i reguljära uttryck i Java Multithreading- uppdraget.

Exempel:

Koda 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ärde känna dessa metoder när vi först lärde oss att kalla klassens metoder String.

trim()metod

Metoden trim()tar bort inledande och efterföljande mellanslag från en sträng. Rör inte mellanslag som finns inuti en sträng (dvs inte i början eller slutet). Exempel:

Koda 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"