Bazen programlamada bir dizeyi ayırmamız gerekir. Java dilinde String.split(), StringTokenizer ve Pattern.compile() yöntemlerini öneriyoruz.
Java’da Dizeyi Bölme
1 2 3 4 5 6 7 8 9 10 11 12 | public class JavaOrnekleri { public static void main(String[] arg) { String str = "Hoşlgeldin :Misafir Kullanıcı"; String[] arrStr = str.split(":"); for (String el: arrStr) System.out.println(el); } } |
1 2 3 4 | Hoşlgeldin Misafir Kullanıcı |
Java String.split() ile Bölme
String.split() yöntemi, belirli bir dizeyi verilen normal ifadenin eşleşmeleri etrafında kırar. Java’da split() yönteminin iki çeşidi vardır:
- public String split(genel regex)
Bu yöntem, normal bir ifadeyi parametre olarak alır ve verilen dizeyi bu normal ifade normal ifadesinin eşleşmeleri etrafında kırar. Varsayılan olarak sınır 0’dır.
Bunun için parametre: regex (sınırlayıcı düzenli ifade).
Verilen dizeyi bölerek hesaplanan bir dizeler dizisi döndürür. - public String split (Dize normal ifadesi, int sınırı)
Bunun için parametreler şunlardır: regex (sınırlayıcı düzenli ifade) ve limit (desenin uygulanma sayısını kontrol eder ve bu nedenle sonuçta oluşan dizinin uzunluğunu etkiler).
Bu, bu dizeyi verilen normal ifadenin eşleşmelerine bölerek sayılan dizeler dizisini döndürür.
1 2 3 4 5 6 7 8 9 10 11 12 | public class JavaOrnekleri { public static void main(String[] arg) { String str = "Merhaba:Dunya:Merhaba:Merhaba"; String split[] = str.split("a", 4); for (String s: split) System.out.println(s); } } |
1 2 3 4 5 6 | Merh b :Duny :Merhaba:Merhaba |
1 2 3 4 5 6 7 8 9 10 11 12 | public class JavaOrnekleri { public static void main(String[] arg) { String str = "Bugün hava şiddetli ve yağmurlu görünyor."; String split[] = str.split(" ", 0); for (String s: split) System.out.println(s); } } |
1 2 3 4 5 6 7 8 | Bugün hava şiddetli ve yağmurlu görünyor. |
1 2 3 4 | Bugün hava |
Java StringTokenizer Kullanımı
Java’da dize belirteçleri, dizeyi belirteçlere bölmeye izin verir. Dize nesnesinin içindeki belirteç sayısını da alabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import java.util.StringTokenizer; public class JavaOrnekleri { public static void main(String[] arg) { StringTokenizer st = new StringTokenizer("Bugün hava çok güzel görünüyor."); System.out.println("İşaret Sayısı: " + st.countTokens()); while (st.hasMoreElements()) { String token = st.nextElement().toString(); System.out.println("İşaret = " + token); } } } |
Çıktı:
1 2 3 4 5 6 7 8 | İşaret Sayısı: 5 İşaret = Bugün İşaret = hava İşaret = çok İşaret = güzel İşaret = görünüyor. |
Not: Dizeyi bölmek için kullanılan ayırıcıyı belirtebilirsiniz. Yukarıdaki örnekte, sınırlayıcıyı boşluk (”) olarak ayarladık.
StringTokenizer’ı birden çok sınırlayıcı ile kullanmak da mümkündür.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import java.util.StringTokenizer; public class JavaOrnekleri { public static void main(String[] arg) { String url = "https://www.tasarimkodlama.com/java-programlama/javada-string-bolme"; StringTokenizer multiTokenizer = new StringTokenizer(url, "://.-"); while (multiTokenizer.hasMoreTokens()) { System.out.println(multiTokenizer.nextToken()); } } } |
Çıktı:
1 2 3 4 5 6 7 8 9 10 11 | https www tasarimkodlama com java programlama javada string bolme |
Java Pattern.compile() Kullanımı
Bu yöntem, verilen girdi dizisini kalıp eşleşmelerine böler. Bunun için parametre: giriş – bölünecek karakter dizisi.
Girdiyi kalıbın eşleşmeleri etrafında bölerek hesaplanan dizeler dizisini döndürür.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import java.util.regex.Pattern; public class JavaOrnekleri { public static void main(String[] arg) { String REGEX = ":"; String INPUT = "merhaba :misafir ziyaretçi"; Pattern pattern = Pattern.compile(REGEX); String[] result = pattern.split(INPUT); for (String data: result) { System.out.println(data); } } } |
1 2 3 4 | merhaba misafir ziyaretçi |
Merhabalar;
Aşağıdaki kod ile ad soyad ayırma yapılıyor
bu koddan daha pratik bir kod önerebilir misiniz.
public class Main {
public int a;
public static void main(String[] args) {
String s = “Sedat Can “;
String s1 = ” Halil İbrahim Yıldırım “;
String s2 = “Hakan Gül Sağlam”;
adSoyad(s);
adSoyad(s1);
adSoyad(s2);
}
public static void adSoyad(String s){
int i;
int uzunluk;
String[] s1;
String s2 = s.trim().replaceAll(“\\s+”, ” “);
uzunluk = s2.length()-s2.replaceAll(” “, “”).length();
if (uzunluk>1)
{
i = s2.indexOf(” “,s2.indexOf(” “, 1)+1);
}else if (uzunluk==1)
{
i = s2.indexOf(” “);
}else
{
i =0;
}
if (i>0)
{
s1 = s2.replaceAll(s2.substring(i), (“#@@#”)+s2.substring(i)).split(“#@@# “);
}else s1 = s2.replaceAll(s2.substring(i), s2.substring(i)).split(” “);
for (String string : s1) {
System.out.println(string);
}
}
}
Muhtemelen bu işini görecektir diye düşünüyorum.
import java.util.ArrayList;
public class JavaOrnekleri {
public static void main(String[] args) {
ArrayList isimler = new ArrayList ();
isimler.add(“Sedat Can “);
isimler.add(” Halil İbrahim Yıldırım “);
isimler.add(” Hakan Gül Sağlam”);
isimler.forEach((n)->{
String adSoyad = n.trim();
int index =adSoyad.lastIndexOf(” “);
String ad = adSoyad.substring(0, index);
String soyad = n.trim().substring(index+1, adSoyad.length());
System.out.println(“Ad:”+ad);
System.out.println(“Soyad:”+soyad);
});
}
}