String sınıfı, metinleri işlemek için birçok yararlı metot sunar. Bu metotlardan biri de split metodudur.
Java Split Metodu Nedir?
Java’da split metodu, String sınıfından türetilmiş bir nesnenin değerini (kısaca dize ya da metin diyebiliriz) belirli bir ifadeye göre parçalara ayırmaya yarar. String veri tipinde nesneler taşıyan bir dizi nesnesi (array) oluşturur ve ayırdığı parçaları (alt dizeleri) bu diziye aktarır. Son olarak oluşturduğu dizi nesnesinin referansını döndürür. Döndürülen referans sayesinde dizinin elemanları üzerinde ihtiyaç duyduğumuz işlemleri gerçekleştirebiliriz. Bu metot, metinleri parçalamak ve analiz etmek için kullanışlı bir metottur.
Java Split Metodu Nasıl Kullanılır?
Split metodu, String sınıfının bir metodudur ve bu nedenle bir String nesnesi üzerinden çağırılabilir. Split metoduna, bir veya iki argüman geçilebilir. Birinci argüman, String veri tipinde ve dizeyi bölmek / parçalara ayırmak için kullanılacak olan, kısaca regex (regular expression) denilen düzenli ifadedir. İkinci argüman ise, oluşturulacak dizi boyutunun sınırını belirtir. Eğer ikinci argüman geçilmemişse, varsayılan olarak 0 (sıfır) geçildiği kabul edilir ve bu da, düzenli ifadeye göre ayrılan her parçanın diziye aktarılması anlamına gelir.
Java Split Metodu Değer Döndürme Durumları
- Girilen düzenli ifadeye göre eşleşme varsa;
- A- Limit değer 0 (sıfır) geçilmiş ise;
- Sondaki boş alt dizeler hariç olmak üzere; düzenli ifadeye göre bulunan tüm alt dizeleri içeren String dizisi döndürür.
- B- Limit değer geçilmemiş ise; (tek argümanlı kullanım)
- Limit değer varsayılan olarak 0 (sıfır) geçilmiş kabul edilir ve yine sondaki boş alt dizeler hariç olmak üzere; düzenli ifadeye göre bulunan tüm alt dizeleri içeren String dizisi döndürür.
- C- Limit değer sıfırdan küçük (negatif) geçilmiş ise;
- Tüm boş alt dizeler de dahil olmak üzere; düzenli ifadeye göre bulunan tüm alt dizeleri içeren String dizisi döndürür.
- D- Limit değer 1 (bir) geçilmiş ise;
- Üzerinde çağırıldığı String nesnesinin referansını içeren 1 elemanlı String dizisi döndürür.
- E- Limit değer 1’den büyük geçilmiş ise;
- Limit değerin 1 eksiği kadar eşleşmeye ek olarak, üzerinde çağırıldığı dize değerinin geriye kalanını içeren bir String dizisi döndürür.
- A- Limit değer 0 (sıfır) geçilmiş ise;
- Girilen düzenli ifadeye göre eşleşme yoksa;
- Limit değere bakılmaksızın üzerinde çağıldığı String nesnesinin referansını içeren 1 elemanlı String dizisi döndürür.
import java.util.Arrays;
public class StringSplitExample {
public static void main(String[] args) {
String metin = "Tam:Weblik::Java!:1:2:::";
// A- Limit değer 0 (sıfır) geçilmiş ise;
String[] dizi_1 = metin.split(":", 0);
System.out.println("A (limit: 0) => " + Arrays.toString(dizi_1) + " => " + dizi_1.length + " elemanlı dizi.");
// Çıktısı : A (limit: 0) => [Tam, Weblik, , Java!, 1, 2] => 6 elemanlı dizi.
// Sondaki boş alt dizeler hariç.
// Sonda olmayan boş alt dizeler dahil. (Örnekte dizinin 2 numaralı indeksindeki eleman)
// B- Limit değer geçilmemiş ise; (tek argümanlı kullanım)
String[] dizi_2 = metin.split(":");
System.out.println("B (limit:yok) => " + Arrays.toString(dizi_2) + " => " + dizi_2.length + " elemanlı dizi.");
// Çıktısı : B (limit:yok) => [Tam, Weblik, , Java!, 1, 2] => 6 elemanlı dizi.
// Limit değer 0 geçilmesi ile aynı.
// C- Limit değer sıfırdan küçük (negatif) geçilmiş ise;
String[] dizi_3 = metin.split(":", -1);
System.out.println("C (limit: -1) => " + Arrays.toString(dizi_3) + " => " + dizi_3.length + " elemanlı dizi.");
// Çıktısı : C (limit: -1) => [Tam, Weblik, , Java!, 1, 2, , , ] => 9 elemanlı dizi.
// Tüm boş alt dizeler dahil.
// D- 2. Limit değer 1 geçilmiş ise;
String[] dizi_4 = metin.split(":", 1);
System.out.println("D (limit: 1) => " + Arrays.toString(dizi_4) + " => " + dizi_4.length + " elemanlı dizi.");
// Çıktısı : D (limit: 1) => [Tam:Weblik::Java!:1:2:::] => 1 elemanlı dizi.
System.out.println(dizi_4[0] == metin);
// (dizi_4[0] == metin) => true (her ikisi de aynı nesneye referanstır)
// E- 2. Limit değer 1' den büyük geçilmiş ise;
String[] dizi_5 = metin.split(":", 2);
System.out.println("E (limit: 2) => " + Arrays.toString(dizi_5) + " => " + dizi_5.length + " elemanlı dizi.");
// Çıktısı : E (limit: 2) => [Tam, Weblik::Java!:1:2:::] => 2 elemanlı dizi.
// F- 1. Argüman (regex) olarak metinde olmayan "abc" ifadesi girilirse
String[] dizi_6 = metin.split("abc");
System.out.println("F (regex: abc) => " + Arrays.toString(dizi_6) + " => " + dizi_6.length + " elemanlı dizi.");
// Çıktısı : F (regex: abc) => [Tam:Weblik::Java!:1:2:::] => 1 elemanlı dizi.
System.out.println(dizi_6[0] == metin);
// (dizi_6[0] == metin) => true (her ikisi de aynı nesneye referanstır)
}
}
Java String sınıfının split metodu ile ilgili yazacaklarım bu kadar. Umarım faydasını görürsünüz. Diğer başlıklarda görüşmek üzere…