1. Membandingkan rentetan

Salah satu operasi yang paling biasa dengan rentetan ialah perbandingan. Kelas String mempunyai lebih sepuluh kaedah berbeza yang digunakan untuk membandingkan satu rentetan dengan rentetan lain. Di bawah ini kita akan melihat tujuh daripada yang utama.

Kaedah Penerangan
boolean equals(String str)
Rentetan dianggap sama jika semua aksaranya sepadan.
boolean equalsIgnoreCase(String str)
Membandingkan rentetan, mengabaikan huruf besar (abaikan sama ada huruf besar atau huruf kecil)
int compareTo(String str)
Membandingkan rentetan secara leksikografi. Mengembalikan 0 jika rentetan adalah sama. Nilai pulangan adalah kurang daripada sifar jika rentetan semasa kurang daripada parameter rentetan. Nilai pulangan adalah lebih besar daripada jika rentetan semasa lebih besar daripada parameter rentetan.
int compareToIgnoreCase(String str)
Membandingkan rentetan secara leksikografi sambil mengabaikan huruf besar. Mengembalikan 0 jika rentetan adalah sama. Nilai pulangan adalah negatif jika rentetan semasa kurang daripada parameter rentetan. Nilai pulangan adalah lebih besar daripada jika rentetan semasa lebih besar daripada parameter rentetan.
boolean regionMatches(int toffset, String str, int offset, int len)
Membandingkan bahagian rentetan
boolean startsWith(String prefix)
Menyemak sama ada rentetan semasa bermula dengan rentetanprefix
boolean endsWith(String suffix)
Menyemak sama ada rentetan semasa berakhir dengan rentetansuffix

Katakan anda ingin menulis atur cara yang meminta pengguna untuk laluan ke fail dan kemudian menyemak jenis fail berdasarkan sambungannya. Kod program sedemikian mungkin kelihatan seperti ini:

Kod Nota
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");
}
Cipta Scannerobjek
Baca baris daripada konsol

Semak sama ada rentetan pathberakhir dengan rentetan yang diberikan


2. Mencari subrentetan

Selepas membandingkan rentetan, operasi kedua paling popular ialah mencari satu rentetan di dalam rentetan yang lain. Kelas String juga mempunyai beberapa kaedah untuk ini:

Kaedah Penerangan
int indexOf(String str)
Mencari rentetan strdalam rentetan semasa. Mengembalikan indeks aksara pertama kejadian pertama.
int indexOf(String str, int index)
Mencari rentetan strdalam rentetan semasa, melangkau indexaksara pertama. Mengembalikan indeks kejadian.
int lastIndexOf(String str)
Mencari rentetan strdalam rentetan semasa, bermula dari penghujung. Mengembalikan indeks kejadian pertama.
int lastIndexOf(String str, int index)
Mencari rentetan strdalam rentetan semasa dari hujung, melangkau indexaksara pertama.
boolean matches(String regex)
Menyemak sama ada rentetan semasa sepadan dengan corak yang ditentukan oleh ungkapan biasa.

Kaedah indexOf(String)dan indexOf(String, index)sering digunakan dalam kombinasi. Kaedah pertama membolehkan anda mencari kejadian pertama subrentetan yang diluluskan dalam rentetan semasa. Dan kaedah kedua membolehkan anda mencari kejadian kedua, ketiga, dsb. dengan melangkau aksara indeks pertama.

Katakan kami mempunyai url seperti " https://domain.com/about/reviews " dan kami mahu menggantikan nama domain dengan " codegym.cc ". Url boleh mempunyai semua jenis nama domain yang berbeza, tetapi kami mengetahui perkara berikut:

  • Nama domain didahului oleh dua garis miring ke hadapan — " //"
  • Nama domain diikuti dengan satu garis miring ke hadapan — " /"

Inilah rupa kod untuk program sedemikian:

Kod Nota
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);
Cipta objek Pengimbas
Baca baris daripada konsol

Dapatkan indeks kejadian pertama rentetan " //"
Kami mendapat indeks kejadian pertama rentetan /, tetapi hanya melihat selepas kejadian aksara //.
Kami mendapat rentetan dari awal hingga akhir aksara //
Kami mendapat rentetan dari /hingga akhir.

Kami menggabungkan rentetan dan domain baharu.

Kaedah lastIndexOf(String)dan lastIndexOf(String, index)berfungsi dengan cara yang sama, hanya carian dilakukan dari hujung rentetan hingga permulaan.



3. Mencipta subrentetan

Selain membandingkan rentetan dan mencari subrentetan, terdapat satu lagi tindakan yang sangat popular: mendapatkan subrentetan daripada rentetan. Seperti yang berlaku, contoh sebelumnya menunjukkan kepada anda substring()panggilan kaedah yang mengembalikan sebahagian daripada rentetan.

Berikut ialah senarai 8 kaedah yang mengembalikan subrentetan daripada rentetan semasa:

Kaedah Penerangan
String substring(int beginIndex, int endIndex)
Mengembalikan subrentetan yang ditentukan oleh julat indeks beginIndex..endIndex.
String repeat(int count)
Mengulang rentetan semasa n kali
String replace(char oldChar, char newChar)
Mengembalikan rentetan baharu: menggantikan watak oldChardengan wataknewChar
String replaceFirst(String regex, String replacement)
Menggantikan subrentetan pertama, yang ditentukan oleh ungkapan biasa, dalam rentetan semasa.
String replaceAll(String regex, String replacement)
Menggantikan semua subrentetan dalam rentetan semasa yang sepadan dengan ungkapan biasa.
String toLowerCase()
Menukar rentetan kepada huruf kecil
String toUpperCase()
Menukar rentetan kepada huruf besar
String trim()
Mengalih keluar semua ruang pada permulaan dan penghujung rentetan

Berikut adalah ringkasan kaedah yang tersedia:

substring(int beginIndex, int endIndex)kaedah

Kaedah ini substringmengembalikan rentetan baharu yang terdiri daripada aksara dalam rentetan semasa, bermula pada aksara dengan indeks beginIndexdan berakhir pada endIndex. Seperti semua selang dalam Java, aksara dengan indeks endIndextidak termasuk dalam selang. Contoh:

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

Jika endIndexparameter tidak ditentukan (yang mungkin), maka subrentetan diambil daripada aksara pada beginIndex hingga ke penghujung rentetan.

repeat(int n)kaedah

Kaedah ulangan hanya mengulangi nmasa rentetan semasa. Contoh:

Kod Hasilnya
"Hello".repeat(3);
"HelloHelloHello"
"Hello".repeat(2);
"HelloHello"
"Hello".repeat(1);
"Hello"
"Hello".repeat(0);
""

replace(char oldChar, char newChar)kaedah

Kaedah ini replace()mengembalikan rentetan baharu di mana semua aksara oldChardigantikan dengan aksara newChar. Ini tidak mengubah panjang rentetan. Contoh:

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

replaceFirst()dan replaceAll()kaedah

Kaedah ini replaceAll()menggantikan semua kejadian satu subrentetan dengan yang lain. Kaedah replaceFirst()menggantikan kejadian pertama subrentetan yang diluluskan dengan subrentetan yang ditentukan. Rentetan yang akan diganti ditentukan oleh ungkapan biasa. Kami akan menyelidiki ungkapan biasa dalam pencarian Java Multithreading .

Contoh:

Kod Hasilnya
"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()kaedah

Kami mengenali kaedah ini apabila kami mula-mula belajar tentang memanggil kaedah kelas String.

trim()kaedah

Kaedah ini trim()mengalih keluar ruang hadapan dan belakang daripada rentetan. Tidak menyentuh ruang yang berada di dalam rentetan (iaitu bukan pada permulaan atau akhir). Contoh:

Kod Hasilnya
"     ".trim();
""
"Hello".trim();
"Hello"
" Hello\n how are you?\n   ".trim();
"Hello\n how are you?\n"
"  Password\n   \n ".trim();
"Password\n   \n"