CodeGym /Kurslar /Java SELF AZ /Java-da sətirlərlə iş

Java-da sətirlərlə iş

Java SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Sətirlərin müqayisəsi

Müqayisə — sətirlərlə ən çox edilən şeylərdən biridir. String sinfinin sətirləri müqayisə etmək üçün istifadə olunan ondan çox müxtəlif metodu var. Aşağıda yeddi əsas metodu nəzərdən keçirəcəyik.

Metodlar Təsvir
boolean equals(String str)
Sətirlər yalnız bütün simvolları üst-üstə düşərsə bərabər sayılır.
boolean equalsIgnoreCase(String str)
Sətirləri hərflərin ölçüsünü (case) nəzərə almadan müqayisə edir.
int compareTo(String str)
Sətirləri leksikoqrafik olaraq müqayisə edir. Əgər sətirlər bərabərdirsə 0 qaytarır. Əgər cari sətir parametr sətirindən kiçikdirsə sıfırdan az olan bir rəqəm qaytarır. Əgər cari sətir parametr sətirindən böyükdürsə sıfırdan böyük olan bir rəqəm qaytarır.
int compareToIgnoreCase(String str)
Sətirləri leksikoqrafik olaraq müqayisə edir, case-i nəzərə almır. Əgər sətirlər bərabərdirsə 0 qaytarır. Əgər cari sətir parametr sətirindən kiçikdirsə sıfırdan az olan bir rəqəm qaytarır. Əgər cari sətir parametr sətirindən böyükdürsə sıfırdan böyük olan bir rəqəm qaytarır.
boolean regionMatches(int toffset, String str, int offset, int len)
Sətirlərin hissələrini müqayisə edir.
boolean startsWith(String prefix)
Cari sətirin prefix sətiri ilə başlayıb-başlamadığını yoxlayır.
boolean endsWith(String suffix)
Cari sətirin suffix sətiri ilə bitib-bitmədiyini yoxlayır.

Təsəvvür edin ki, istifadəçidən bir fayl yolunu daxil etməsini istəyən və uzantısına əsasən faylın nə olduğunu yoxlayan bir proqram yazmaq istəyirsiniz. Onda belə bir proqramın kodu təxminən belə görünə bilər:

Kod Qeydlər
Scanner console = new Scanner(System.in);
String path = console.nextLine();

if (path.endsWith(".jpg") || path.endsWith(".jpeg"))
{
   System.out.println("Bu Jpeg!");
}
else if (path.endsWith(".htm") || path.endsWith(".html"))
{
   System.out.println("Bu HTML səhifəsidir");
}
else if (path.endsWith(".doc") || path.endsWith(".docx"))
{
   System.out.println("Bu Word sənədidir");
}
else
{
   System.out.println("Naməlum format");
}
Scanner obyektinin yaradılması
Konsoldan sətir oxumaq

path sətirinin müəyyən sətirlə bitib-bitmədiyini yoxlayırıq


2. Alt sətirlərin axtarışı

Sətirlərin müqayisəsindən sonra ən populyar əməliyyat – bir sətiri digərində axtarmaqdır. Bunun üçün String sinifinin bir neçə metodu var:

Metodlar Təsvir
int indexOf(String str)
Verilmiş str sətirini cari sətirdə tapır. Tapılmış sətirin ilk simvolunun indeksini qaytarır.
int indexOf(String str, int index)
Verilmiş str sətirini cari sətirdə tapır, amma əvvəlindən index qədər simvolu keçir. Tapılmış girişin indeksini qaytarır.
int lastIndexOf(String str)
Verilmiş str sətirini cari sətirdə sondan axtarır. İlk girişin indeksini qaytarır.
int lastIndexOf(String str, int index)
Verilmiş str sətirini cari sətirdə sondan axtarır, amma əvvəlindən index qədər simvolu keçir.
boolean matches(String regex)
Cari sətirin verilmiş regular ifadə şablonuna uyğun olub-olmadığını yoxlayır.

indexOf(String)indexOf(String, index) metodları tez-tez birlikdə istifadə olunur. Birinci metod verilmiş sətirin cari sətirdə ilk girişini tapmağa imkan verir. İkinci metod isə ilk index simvolları keçərək ikinci, üçüncü və sair girişləri tapmağa imkan verir.

Məsələn, bizdə «https://domen.com/about/reviews» tipli bir url var və biz domen adını codegym.com olaraq dəyişmək istəyirik. URL-lərdə domenlər müxtəlif ola bilər, amma biz bilirik ki:

  • Domen adından əvvəl iki slash // gəlir
  • Domen adından sonra isə tək slash / gəlir

Belə bir proqramın kodu belə görünərdi:

Kod Qeydlər
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.com" + last;
System.out.println(result);
Scanner obyektinin yaradılması
Konsoldan sətirin oxunması

// sətirinin ilk girişinin indeksini əldə edirik
/ sətirinin ilk girişinin indeksini əldə edirik, amma axtarışı yalnız // simvollarından sonra aparırıq.
// simvollara qədər başlayaraq sətiri əldə edirik
/ simvollardan başlayaraq sonuna kimi sətiri əldə edirik.

Sətirləri və yeni domeni birləşdiririk.

lastIndexOf(String)lastIndexOf(String, index) metodları da eyni qaydada işləyir, sadəcə axtarış sətirin sonundan başlanır.



3. Alt sətir yaratmaq

Sətirlərin müqayisəsi və alt sətirlərin axtarışı ilə yanaşı, başqa bir çox məşhur əməliyyat – sətirdən alt sətir əldə etməkdir. Əvvəlki nümunədə substring() metodunun çağırıldığını görmüşdünüz ki, bu metod sətirin bir hissəsini qaytarır.

Bura hazırki sətirdən alt sətirlər əldə etmək üçün istifadə edilən 8 metodun siyahısıdır:

Metodlar Açıqlama
String substring(int beginIndex, int endIndex)
Başlanğıc və son simvol aralığı ilə müəyyən edilmiş alt sətiri qaytarır beginIndex..endIndex.
String repeat(int count)
Cari sətiri count dəfə təkrarlayır
String replace(char oldChar, char newChar)
Yeni bir sətir qaytarır: oldChar simvolunu newChar simvolu ilə əvəz edir
String replaceFirst(String regex, String replacement)
Mövcud sətirdə müntəzəm ifadə ilə müəyyən edilmiş alt sətiri əvəz edir.
String replaceAll(String regex, String replacement)
Mövcud sətirdə müntəzəm ifadə ilə uyğun gələn bütün alt sətirləri əvəz edir.
String toLowerCase()
Sətiri kiçik hərflərə çevirir
String toUpperCase()
Sətiri böyük hərflərə çevirir
String trim()
Sətirin əvvəlində və sonunda olan boşluqları silir

Mövcud metodların qısa təsviri:

Metod substring(int beginIndex, int endIndex)

substring metodu cari sətirdən yeni bir sətir qaytarır; bu sətir beginIndex nömrəli simvoldan başlayır və endIndex nömrəli simvolla bitir. Java-da bütün aralıqlarda olduğu kimi, endIndex nömrəli simvol aralığa daxil edilmir. Nümunələr:

Kod Nəticə
"Salam".substring(0, 3);
"Sal"
"Salam".substring(1, 4);
"ala"
"Salam".substring(1, 5);
"alam"
"Salam".substring(1);
"alam"

Əgər endIndex parametri göstərilməyibsə (bu mümkündür), alt sətir beginIndex simvolundan başlayaraq sətirin sonuna qədər götürülür.

Metod repeat(int n)

Repeat metodu sadəcə cari sətiri n dəfə təkrarlayır. Nümunə:

Kod Nəticə
"Salam".repeat(3);
"SalamSalamSalam"
"Salam".repeat(2);
"SalamSalam"
"Salam".repeat(1);
"Salam"
"Salam".repeat(0);
""

Metod replace(char oldChar, char newChar)

replace() metodu yeni bir sətir qaytarır ki, burada bütün oldChar simvolları newChar ilə əvəz olunur. Sətirin uzunluğu dəyişmir. Nümunələr:

Kod Nəticə
"Salam".replace('S', 's');
"salam"
"Salam".replace('a', 'e');
"Selam"
"Salam".replace('m', 'n');
"Salan"
"Salam".replace('a', 'ı');
"Sılam"

Metodlar replaceFirst()replaceAll()

replaceAll() metodu bir alt sətiri digəri ilə əvəz edir. replaceFirst() isə yalnız ilk tapılmış alt sətiri əvəz edir. Əvəz ediləcək sətir müntəzəm ifadə ilə təyin olunur. Regular expressions mövzusuna Java Multithreading kvestində toxunacağıq.

Nümunələr:

Kod Nəticə
"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!"

Metodlar toLowerCase() və toUpperCase()

Bu metodlarla biz ilk dəfə String sinfi metodlarını öyrənərkən tanış olmuşuq.

Metod trim()

trim() metodu sətirin əvvəli və sonundakı boşluqları silir. Sətirin içindəki boşluqlara toxunulmur. Nümunələr:

Kod Nəticə
"     ".trim();
""
"Salam".trim();
"Salam"
" Salam\n necəsən?\n   ".trim();
"Salam\n necəsən?\n"
"  Şifrə\n   \n ".trim();
"Şifrə\n   \n"

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION