1. Strings vergelijken

Een van de meest voorkomende bewerkingen met tekenreeksen is vergelijking. De klasse String heeft meer dan tien verschillende methoden die worden gebruikt om de ene string met de andere te vergelijken. Hieronder zullen we zeven van de belangrijkste bekijken.

methoden Beschrijving
boolean equals(String str)
Tekenreeksen worden als gelijk beschouwd als al hun tekens overeenkomen.
boolean equalsIgnoreCase(String str)
Vergelijkt tekenreeksen, negeert hoofdletters of kleine letters (negeert of het hoofdletters of kleine letters zijn)
int compareTo(String str)
Vergelijkt strings lexicografisch. Retourneert 0 als de tekenreeksen gelijk zijn. De geretourneerde waarde is kleiner dan nul als de huidige tekenreeks kleiner is dan de tekenreeksparameter. De geretourneerde waarde is groter dan wanneer de huidige tekenreeks groter is dan de tekenreeksparameter.
int compareToIgnoreCase(String str)
Vergelijkt strings lexicografisch terwijl hoofdlettergebruik wordt genegeerd. Retourneert 0 als de tekenreeksen gelijk zijn. De geretourneerde waarde is negatief als de huidige tekenreeks kleiner is dan de tekenreeksparameter. De geretourneerde waarde is groter dan wanneer de huidige tekenreeks groter is dan de tekenreeksparameter.
boolean regionMatches(int toffset, String str, int offset, int len)
Vergelijkt delen van strings
boolean startsWith(String prefix)
Controleert of de huidige string begint met de stringprefix
boolean endsWith(String suffix)
Controleert of de huidige string eindigt met de stringsuffix

Stel dat u een programma wilt schrijven dat de gebruiker om een ​​pad naar een bestand vraagt ​​en vervolgens het bestandstype controleert op basis van de extensie. De code van zo'n programma kan er ongeveer zo uitzien:

Code Notities
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");
}
Maak een Scannerobject
Lees een regel uit de console

Controleer of de string patheindigt met de gegeven string


2. Substrings zoeken

Na het vergelijken van strings is de tweede meest populaire operatie het vinden van de ene string in de andere. De klasse String heeft hiervoor ook enkele methoden:

methoden Beschrijving
int indexOf(String str)
Zoekt naar de tekenreeks strin de huidige tekenreeks. Retourneert de index van het eerste teken van de eerste instantie.
int indexOf(String str, int index)
Zoekt naar de tekenreeks strin de huidige tekenreeks, waarbij de eerste indextekens worden overgeslagen. Retourneert de index van de gebeurtenis.
int lastIndexOf(String str)
Zoekt naar de tekenreeks strin de huidige tekenreeks, beginnend vanaf het einde. Retourneert de index van het eerste exemplaar.
int lastIndexOf(String str, int index)
Zoekt naar de tekenreeks strin de huidige tekenreeks vanaf het einde, waarbij de eerste indextekens worden overgeslagen.
boolean matches(String regex)
Controleert of de huidige tekenreeks overeenkomt met een patroon dat is opgegeven door een reguliere expressie.

De methoden indexOf(String)en indexOf(String, index)worden vaak in combinatie gebruikt. Met de eerste methode kunt u het eerste exemplaar van de doorgegeven subtekenreeks in de huidige tekenreeks vinden. En met de tweede methode kunt u de tweede, derde enz. Vinden door de eerste indextekens over te slaan.

Stel dat we een url hebben zoals " https://domain.com/about/reviews ", en we willen de domeinnaam vervangen door " codegym.cc ". URL's kunnen allerlei verschillende domeinnamen hebben, maar we weten het volgende:

  • De domeinnaam wordt voorafgegaan door twee schuine strepen — " //"
  • De domeinnaam wordt gevolgd door een enkele schuine streep naar voren — " /"

Dit is hoe de code voor zo'n programma eruit zou zien:

Code Notities
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);
Maak een Scanner-object
Lees een regel van de console

Haal de index op van de eerste keer dat de string voorkomt " //"
We krijgen de index van de eerste keer dat de string voorkomt /, maar kijken alleen naar het voorkomen van de karakters //.
We krijgen de string van het begin tot het einde van de tekens. //
We krijgen de string van /tot het einde.

We voegen de strings en het nieuwe domein samen.

De methoden lastIndexOf(String)en lastIndexOf(String, index)werken op dezelfde manier, alleen wordt er gezocht vanaf het einde van de tekenreeks tot het begin.



3. Subtekenreeksen maken

Naast het vergelijken van strings en het vinden van substrings, is er nog een andere zeer populaire actie: een substring halen uit een string. Toevallig liet het vorige voorbeeld je een substring()methodeaanroep zien die een deel van een string teruggaf.

Hier is een lijst met 8 methoden die subtekenreeksen van de huidige tekenreeks retourneren:

methoden Beschrijving
String substring(int beginIndex, int endIndex)
Retourneert de subtekenreeks die is opgegeven door het indexbereik beginIndex..endIndex.
String repeat(int count)
Herhaalt de huidige string n keer
String replace(char oldChar, char newChar)
Retourneert een nieuwe tekenreeks: vervangt het teken oldChardoor het tekennewChar
String replaceFirst(String regex, String replacement)
Vervangt de eerste subtekenreeks, gespecificeerd door een reguliere expressie, in de huidige tekenreeks.
String replaceAll(String regex, String replacement)
Vervangt alle substrings in de huidige string die overeenkomen met de reguliere expressie.
String toLowerCase()
Converteert de tekenreeks naar kleine letters
String toUpperCase()
Converteert de tekenreeks naar hoofdletters
String trim()
Verwijdert alle spaties aan het begin en einde van een string

Hier is een samenvatting van de beschikbare methoden:

substring(int beginIndex, int endIndex)methode

De substringmethode retourneert een nieuwe string die bestaat uit tekens in de huidige string, beginnend bij het teken met index beginIndexen eindigend op endIndex. Zoals bij alle intervallen in Java, endIndexis het teken met index niet opgenomen in het interval. Voorbeelden:

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

Als de endIndexparameter niet is opgegeven (wat mogelijk is), wordt de subtekenreeks overgenomen van het teken bij beginIndex tot het einde van de tekenreeks.

repeat(int n)methode

De herhalingsmethode herhaalt eenvoudigweg de huidige reekstijden n. Voorbeeld:

Code Resultaat
"Hello".repeat(3);
"HelloHelloHello"
"Hello".repeat(2);
"HelloHello"
"Hello".repeat(1);
"Hello"
"Hello".repeat(0);
""

replace(char oldChar, char newChar)methode

De replace()methode retourneert een nieuwe string waarin alle tekens oldCharzijn vervangen door het teken newChar. Dit verandert niets aan de lengte van de string. Voorbeeld:

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

replaceFirst()en replaceAll()methoden

De replaceAll()methode vervangt alle exemplaren van de ene subtekenreeks door een andere. De replaceFirst()methode vervangt de eerste keer dat de doorgegeven subtekenreeks voorkomt door de opgegeven subtekenreeks. De te vervangen tekenreeks wordt gespecificeerd door een reguliere expressie. We zullen ingaan op reguliere expressies in de Java Multithreading- zoektocht.

Voorbeelden:

Code Resultaat
"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()methoden

We hebben deze methoden leren kennen toen we voor het eerst leerden over het aanroepen van de methoden van de Stringklas.

trim()methode

De trim()methode verwijdert voorloop- en volgspaties uit een string. Raakt geen spaties binnen een string (dwz niet aan het begin of einde). Voorbeelden:

Code Resultaat
"     ".trim();
""
"Hello".trim();
"Hello"
" Hello\n how are you?\n   ".trim();
"Hello\n how are you?\n"
"  Password\n   \n ".trim();
"Password\n   \n"