1. A karakterláncok összehasonlítása

A karakterláncokkal végzett egyik leggyakoribb művelet az összehasonlítás. A String osztály több mint tíz különböző metódussal rendelkezik, amelyek az egyik karakterlánc és a másik karakterlánc összehasonlítására szolgálnak. Az alábbiakban a legfontosabbak közül hétet veszünk szemügyre.

Mód Leírás
boolean equals(String str)
A karakterláncok akkor tekinthetők egyenlőnek, ha minden karakterük egyezik.
boolean equalsIgnoreCase(String str)
Összehasonlítja a karakterláncokat, figyelmen kívül hagyva a betűk kis- és nagybetűit (figyelmen kívül hagyja, hogy nagy- vagy kisbetűk-e)
int compareTo(String str)
Összehasonlítja a húrokat lexikográfiailag. 0-t ad vissza, ha a karakterláncok egyenlőek. A visszatérési érték kisebb, mint nulla, ha az aktuális karakterlánc kisebb, mint a karakterlánc paraméter. A visszatérési érték nagyobb, mintha az aktuális karakterlánc nagyobb, mint a karakterlánc paraméter.
int compareToIgnoreCase(String str)
Lexikográfiailag hasonlítja össze a karakterláncokat, figyelmen kívül hagyva a kis- és nagybetűket. 0-t ad vissza, ha a karakterláncok egyenlőek. A visszatérési érték negatív, ha az aktuális karakterlánc kisebb, mint a karakterlánc paraméter. A visszatérési érték nagyobb, mintha az aktuális karakterlánc nagyobb, mint a karakterlánc paraméter.
boolean regionMatches(int toffset, String str, int offset, int len)
Összehasonlítja a húrok részeit
boolean startsWith(String prefix)
Ellenőrzi, hogy az aktuális karakterlánc a karakterlánccal kezdődik-eprefix
boolean endsWith(String suffix)
Ellenőrzi, hogy az aktuális karakterlánc véget ér-e a karakterlánccalsuffix

Tegyük fel, hogy olyan programot akarunk írni, amely elkéri a felhasználótól egy fájl elérési útját, majd ellenőrzi a fájl típusát a kiterjesztése alapján. Egy ilyen program kódja így nézhet ki:

Kód Megjegyzések
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");
}
ScannerObjektum létrehozása
Sor olvasása a konzolból

Ellenőrizze, hogy a karakterlánc patha megadott karakterláncra végződik-e

3
Feladat
Java Syntax,  szintlecke
Zárt
Task No. 1 about integer type conversions
This task begins a series of tasks about integer type conversions. This is not a very difficult topic, but it often bewilders noobies because instructors sometimes put in at the very beginning, which is fundamentally wrong. But on Level 10, you're ready. Arrange the cast operators correctly to get the required result: d > 0. The operators are in the conditions.

2. Alkarakterláncok keresése

A karakterláncok összehasonlítása után a második legnépszerűbb művelet az egyik karakterlánc megtalálása a másikban. A String osztálynak van néhány módszere is:

Mód Leírás
int indexOf(String str)
Megkeresi a karakterláncot straz aktuális karakterláncban. Az első előfordulás első karakterének indexét adja vissza.
int indexOf(String str, int index)
Megkeresi a karakterláncot straz aktuális karakterláncban, kihagyva az első indexkaraktereket. Az előfordulás indexét adja vissza.
int lastIndexOf(String str)
Megkeresi a karakterláncot straz aktuális karakterláncban, a végétől kezdve. Az első előfordulás indexét adja vissza.
int lastIndexOf(String str, int index)
Megkeresi a karakterláncot straz aktuális karakterláncban a végétől, az első indexkarakterek kihagyásával.
boolean matches(String regex)
Ellenőrzi, hogy az aktuális karakterlánc egyezik-e egy reguláris kifejezés által megadott mintával.

A indexOf(String)és indexOf(String, index)módszereket gyakran kombinálva alkalmazzák. Az első módszer segítségével megtalálhatja az átadott részkarakterlánc első előfordulását az aktuális karakterláncban. A második módszer pedig lehetővé teszi a második, harmadik stb. előfordulások megtalálását az első indexkarakterek kihagyásával.

Tegyük fel, hogy van egy URL-ünk, például " https://domain.com/about/reviews ", és a domain nevet a " codegym.cc " -re szeretnénk cserélni . Az URL-eknek sokféle domain neve lehet, de ismerjük a következőket:

  • A domain név előtt két perjel szerepel – " //"
  • A domain nevet egyetlen perjel követi – " /"

Így nézne ki egy ilyen program kódja:

Kód Megjegyzések
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);
Szkenner objektum létrehozása
Sor olvasása a konzolról

A karakterlánc első előfordulásának indexének lekérése " //"
Megkapjuk a karakterlánc első előfordulásának indexét /, de csak a karakterek előfordulása után nézzük meg //.
Megkapjuk a karakterláncot az elejétől a végéig //
A karakterláncot megkapjuk /a végéig.

Összefűzzük a karakterláncokat és az új tartományt.

A lastIndexOf(String)és lastIndexOf(String, index)metódusok ugyanúgy működnek, csak a keresés a karakterlánc végétől az elejéig történik.


3
Feladat
Java Syntax,  szintlecke
Zárt
Task No. 2 about integer type conversions
The second task in the "Integer Type Conversions" series doesn't seem much different from the previous one at first glance. This is by design. This series was specifically created to make you a "conversion veteran" and simultaneously introduce your brain to type conversion rules in Java. Arrange the cast operators correctly to get the required result: d = 3.765. The operators are in the conditions.

3. Alkarakterláncok létrehozása

A karakterláncok összehasonlítása és a részkarakterláncok keresése mellett van egy másik nagyon népszerű művelet: a karakterláncból egy részkarakterlánc beszerzése. substring()Ahogy ez megtörténik, az előző példa egy metódushívást mutatott be , amely egy karakterlánc egy részét adta vissza.

Itt van egy lista 8 metódussal, amelyek az aktuális karakterláncból adják vissza a részkarakterláncokat:

Mód Leírás
String substring(int beginIndex, int endIndex)
Az indextartomány által megadott részkarakterláncot adja vissza beginIndex..endIndex.
String repeat(int count)
Az aktuális karakterláncot n-szer megismétli
String replace(char oldChar, char newChar)
Új karakterláncot ad vissza: lecseréli a karaktert oldChara karakterrenewChar
String replaceFirst(String regex, String replacement)
Lecseréli a reguláris kifejezéssel megadott első részkarakterláncot az aktuális karakterláncban.
String replaceAll(String regex, String replacement)
Lecseréli az összes olyan részkarakterláncot az aktuális karakterláncban, amely megfelel a reguláris kifejezésnek.
String toLowerCase()
A karakterláncot kisbetűssé alakítja
String toUpperCase()
A karakterláncot nagybetűssé alakítja
String trim()
Eltávolítja az összes szóközt a karakterlánc elején és végén

Íme az elérhető módszerek összefoglalása:

substring(int beginIndex, int endIndex)módszer

A substringmetódus egy új karakterláncot ad vissza, amely az aktuális karakterlánc karaktereiből áll, az indexes karaktertől kezdve beginIndexés a -ra végződően endIndex. Mint minden Java intervallum esetében, az indexet tartalmazó karakter endIndexnem szerepel az intervallumban. Példák:

Kód Eredmény
"Hellos".substring(0, 3);
"Hel"
"Hellos".substring(1, 4);
"ell"
"Hellos".substring(1, 6);
"ellos"
"Hellos".substring(1);
"ellos"

Ha a endIndexparaméter nincs megadva (ami lehetséges), akkor a részkarakterlánc a beginIndex karakterétől a karakterlánc végéig kerül.

repeat(int n)módszer

Az ismétlési módszer egyszerűen megismétli az aktuális karakterlánc- nidőket. Példa:

Kód Eredmény
"Hello".repeat(3);
"HelloHelloHello"
"Hello".repeat(2);
"HelloHello"
"Hello".repeat(1);
"Hello"
"Hello".repeat(0);
""

replace(char oldChar, char newChar)módszer

A replace()metódus egy új karakterláncot ad vissza, amelyben az összes karaktert oldChara karakter helyettesíti newChar. Ez nem változtatja meg a karakterlánc hosszát. Példa:

Kód Eredmény
"Programming".replace('Z', 'z');
"Programming"
"Programming".replace('g', 'd');
"Prodrammind"
"Programming".replace('a', 'e');
"Progremming"
"Programming".replace('m', 'w');
"Prograwwing"

replaceFirst()és replaceAll()módszerek

A replaceAll()metódus az egyik részkarakterlánc minden előfordulását lecseréli egy másikra. A replaceFirst()metódus lecseréli az átadott részkarakterlánc első előfordulását a megadott részkarakterláncra. A lecserélendő karakterláncot reguláris kifejezés határozza meg. A Java Multithreading küldetés reguláris kifejezéseivel foglalkozunk .

Példák:

Kód Eredmény
"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()mód

Ezeket a metódusokat akkor ismertük meg, amikor először megismertük az Stringosztály metódusainak meghívását.

trim()módszer

A trim()módszer eltávolítja a bevezető és a záró szóközt a karakterláncból. Nem érinti meg a karakterláncon belüli szóközöket (azaz nem az elején vagy a végén). Példák:

Kód Eredmény
"     ".trim();
""
"Hello".trim();
"Hello"
" Hello\n how are you?\n   ".trim();
"Hello\n how are you?\n"
"  Password\n   \n ".trim();
"Password\n   \n"

3
Feladat
Java Syntax,  szintlecke
Zárt
Task No. 3 about integer type conversions
"Nothing organizes your thinking as much as performing integer type conversions in your head. Of course, a compiler will also suffice". And now, the third task in the "Integer Type Conversion" series. We have some variables converted to another type, but we don't have enough of them. We need to add one type cast operation to obtain the require answer.