1. Sammenligning av strenger

En av de vanligste operasjonene med strenger er sammenligning. String-klassen har over ti forskjellige metoder som brukes til å sammenligne en streng med en annen streng. Nedenfor skal vi ta en titt på syv av de viktigste.

Metoder Beskrivelse
boolean equals(String str)
Strenger anses som like hvis alle karakterene deres samsvarer.
boolean equalsIgnoreCase(String str)
Sammenligner strenger, ignorerer store og små bokstaver (ignorerer om de er store eller små)
int compareTo(String str)
Sammenligner strenger leksikografisk. Returnerer 0 hvis strengene er like. Returverdien er mindre enn null hvis gjeldende streng er mindre enn strengparameteren. Returverdien er større enn hvis gjeldende streng er større enn strengparameteren.
int compareToIgnoreCase(String str)
Sammenligner strenger leksikografisk mens man ignorerer store og små bokstaver. Returnerer 0 hvis strengene er like. Returverdien er negativ hvis gjeldende streng er mindre enn strengparameteren. Returverdien er større enn hvis gjeldende streng er større enn strengparameteren.
boolean regionMatches(int toffset, String str, int offset, int len)
Sammenligner deler av strenger
boolean startsWith(String prefix)
Sjekker om gjeldende streng starter med strengenprefix
boolean endsWith(String suffix)
Sjekker om gjeldende streng slutter med strengensuffix

La oss si at du vil skrive et program som ber brukeren om en bane til en fil og deretter sjekker filtypen basert på filtypen. Koden til et slikt program kan se omtrent slik ut:

Kode Notater
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");
}
Lag et Scannerobjekt
Les en linje fra konsollen

Sjekk om strengen pathslutter med den gitte strengen


2. Søke etter understrenger

Etter å ha sammenlignet strenger, er den nest mest populære operasjonen å finne en streng inne i en annen. String-klassen har også noen få metoder for dette:

Metoder Beskrivelse
int indexOf(String str)
Søker etter strengen stri gjeldende streng. Returnerer indeksen til det første tegnet i den første forekomsten.
int indexOf(String str, int index)
Søker etter strengen stri gjeldende streng, og hopper over de første indextegnene. Returnerer indeksen for forekomsten.
int lastIndexOf(String str)
Søker etter strengen stri gjeldende streng, med start fra slutten. Returnerer indeksen for den første forekomsten.
int lastIndexOf(String str, int index)
Søker etter strengen stri gjeldende streng fra slutten, og hopper over de første indextegnene.
boolean matches(String regex)
Sjekker om gjeldende streng samsvarer med et mønster spesifisert av et regulært uttrykk.

Metodene indexOf(String)og indexOf(String, index)brukes ofte i kombinasjon. Den første metoden lar deg finne den første forekomsten av den beståtte understrengen i gjeldende streng. Og den andre metoden lar deg finne den andre, tredje, osv. forekomsten ved å hoppe over de første indekstegnene.

Anta at vi har en url som " https://domain.com/about/reviews ", og vi ønsker å erstatte domenenavnet med " codegym.cc ". Nettadresser kan ha alle slags forskjellige domenenavn, men vi vet følgende:

  • Domenenavnet innledes med to skråstreker – " //"
  • Domenenavnet etterfølges av en enkelt skråstrek - " /"

Slik vil koden for et slikt program se ut:

Kode Notater
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);
Lag et skannerobjekt
Les en linje fra konsollen

Hent indeksen for den første forekomsten av strengen " //"
Vi får indeksen til den første forekomsten av strengen /, men ser bare etter en forekomst av tegnene //.
Vi får strengen fra begynnelsen til slutten av tegnene //
Vi får strengen fra /til slutten.

Vi kobler sammen strengene og det nye domenet.

Metodene lastIndexOf(String)og lastIndexOf(String, index)fungerer på samme måte, bare søket utføres fra slutten av strengen til begynnelsen.



3. Opprette delstrenger

I tillegg til å sammenligne strenger og finne understrenger, er det en annen veldig populær handling: å få en understreng fra en streng. Som det skjer, viste forrige eksempel deg et substring()metodekall som returnerte en del av en streng.

Her er en liste over 8 metoder som returnerer understrenger fra gjeldende streng:

Metoder Beskrivelse
String substring(int beginIndex, int endIndex)
Returnerer delstrengen spesifisert av indeksområdet beginIndex..endIndex.
String repeat(int count)
Gjentar gjeldende streng n ganger
String replace(char oldChar, char newChar)
Returnerer en ny streng: erstatter tegnet oldCharmed tegnetnewChar
String replaceFirst(String regex, String replacement)
Erstatter den første delstrengen, spesifisert av et regulært uttrykk, i gjeldende streng.
String replaceAll(String regex, String replacement)
Erstatter alle understrenger i gjeldende streng som samsvarer med det regulære uttrykket.
String toLowerCase()
Konverterer strengen til små bokstaver
String toUpperCase()
Konverterer strengen til store bokstaver
String trim()
Fjerner alle mellomrom på begynnelsen og slutten av en streng

Her er en oppsummering av de tilgjengelige metodene:

substring(int beginIndex, int endIndex)metode

Metoden substringreturnerer en ny streng som består av tegn i gjeldende streng, som starter ved tegnet med indeks beginIndexog slutter på endIndex. Som med alle intervaller i Java, er ikke tegnet med indeks endIndexinkludert 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 spesifisert (noe som er mulig), blir delstrengen tatt fra tegn ved beginIndex til slutten av strengen.

repeat(int n)metode

Gjentametoden gjentar ganske enkelt gjeldende 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 der alle tegn oldCharerstattes med tegnet newChar. Dette endrer ikke lengden på 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 av en delstreng med en annen. Metoden replaceFirst()erstatter den første forekomsten av den beståtte understrengen med den angitte understrengen. Strengen som skal erstattes er spesifisert av et regulært uttrykk. Vi vil fordype oss i vanlige uttrykk i Java Multithreading- oppdraget.

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 ble kjent med disse metodene da vi først lærte om å kalle metodene i klassen String.

trim()metode

Metoden trim()fjerner ledende og etterfølgende mellomrom fra en streng. Berører ikke mellomrom som er inne i en streng (dvs. ikke i begynnelsen eller slutten). 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"