Bir yazıyı(string) parçalamanın tabii ki birden fazla yolu olabilir. Ayrıştırmak istediğiniz string in içeriğine ya da sonuçta elde etmek istediğiniz parçaların içeriğine ya da uzunluğuna göre metodunuzu şekillendirmeniz gerekebilir. Ama en basit haliyle bir string i belli işaretler pivot olacak şekilde parçalara ayırmak için regular expression tekniğini kullanmalısınız. Diyelim ki "gizliUUID" adında bir string öğeniz var ve "-" işaretlerinden itibaren onu ayırmak istiyorsunuz. Öncelikle aşağıdaki gibi string in ayrıştırma işaretini içerip içermediğine bakmanızı tavsiye ederim:
String gizliUUID = "92290df5-e45c-4014-82f1-9fc9b04fe3e9";
if (gizliUUID.contains("-")) {
// Burada islem yapilacak.
} else {
// Burada string o isareti icermedigi icin hata dondurulecek.
}
İçeriği parçalara ayırıp, parçaları sırasıyla bir listeye atmak için aşağıdaki split() işlemini yapiyorum. Eğer parçalara tek tek erişmek istersem de, mesela n inci parçaya, liste[n] şeklinde o parçayı çağırabilirim:
String[] parcalarListesi = gizliUUID.split("-");
String ilkParca = parcalarListesi[0];
String ikinciParca = parcalarListesi[1];
String ucuncuParca = parcalarListesi[2];
String dorduncuParca = parcalarListesi[3];
String besinciParca = parcalarListesi[4];
Eğer başta elinizde olan string i (yazı öğesi) 5 parça olmasına rağmen sadece ilk "-" ile parçasından itibaren bölmek isterseniz aşağıdaki gibi split() fonksiyonunu yanında sayı ile çağırabilirsiniz. Ancak bu işlemde son görülen "-" işaretinden sonraki tüm kalan kısım tek parça halinde listeye alınır, yani metodda 3. ayrıştırıcıdan sonra kontrol etme dediğiniz için, 3.parça içinde "-" işareti olsun olmasın ayrılmaz:
String[] parcalarListesi = gizliUUID.split("-", 3);
Bu işlemleri yaparken "-" işaretinden itibaren ayırıyoruz ve o işareti yok ediyoruz. Eğer o işareti yok etmek istemezseniz tabii ki iki farklı seçeneğiniz var: işareti soldaki parçada bırakmak ve sağdaki parçada bırakmak:
String[] parcalarListesi = gizliUUID.split("(?<=-)"); // - isareti soldaki parcada kalir.
String[] parcalarListesi = gizliUUID.split("(?=-)"); // - isareti sagdaki parcada kalir.
Bu ayrıştırma işlemini tabii ki sadece "-" işaretiyle değil, harfler, sayılar ve hatta meta karakterler yardımıyla da yapabilirsiniz. Ama meta karakterleri yani "\, ^, $, ., |, ?, *, +, (, ), [, {" karakterlerinden birini kullanırken ya başlarına "\\" koyarak özel durum olduğunu belli etmeniz ya da biraz farklı bir yol izlemeniz gerekiyor. Mesela elinizde olan string i "+" öğelerini kullanarak bölmek isterseniz:
String[] parcalarListesi = gizliUUID.split("\\+");
String[] parcalarListesi = gizliUUID.split("[+]");
String[] parcalarListesi = gizliUUID.split(Pattern.quote("+"));