Java String split() Metodunun Örneği

⚡ Akıllı Özet

Bir Dizeyi Böl Java Metni ayırıcı karakterle eşleşen yerlerde bölen ve parçaları bir String dizisi olarak döndüren `split()` yöntemini kullanır. İsteğe bağlı bir `limit` argümanı, üretilen parça sayısını sınırlar ve geri kalanını olduğu gibi bırakır.

  • 🧩 İade Türü: `split()` fonksiyonu tek bir dize değil, `String[]` dizisi döndürür; bu nedenle sonuç bir diziye atanmalıdır.
  • 🔤 Ayırıcı Regex'tir: Bu argüman bir normal ifade olduğundan, nokta ve dikey çizgi gibi karakterlerin esca ile belirtilmesi gerekir.ping.
  • 🔢 Sınır Argümanı: 3 sınırını aşmak, iki ayrı parça oluşturur ve metnin geri kalanını son öğe olarak korur.
  • ␣ Boşluk Deseni: \\s deseni, bir cümleyi kelimelere ayıran herhangi bir tek boşluk karakteriyle eşleşir.
  • 🕳️ Sondaki Boşluklar: Negatif bir sınır belirtilmediği sürece, sondaki boş alanlar yok sayılır.
  • 🔁 Okuma Sonuçları: Dizi uzunluğu boyunca standart bir for döngüsü, her bir parçayı sırayla yazdırır.

Java String split() Yöntemi

split() dizesi nedir? Java?

MKS split() Bu yöntem, bir şeyi kırmanıza olanak tanır. dizi belirli bir temele dayanarak Java Dize ayırıcı. Çoğu zaman ayırıcı, dizeyi bölmek istediğiniz boşluk veya virgül (,) olur.

split() işlevinin söz dizimi

public String[] split(String regex)
public String[] split(String regex, int limit)

⚠️ İade türüyle ilgili not: split() bir verir String[] dizi, tek bir tane bile değil StringSonucu düz bir değere atamak. String Değişken, uyumsuz tür hatası nedeniyle derlenemiyor; bu, yeni başlayanların bu yöntemle ilgili en sık yaptığı hatadır.

Parametre

  • Düzenli ifade: Metne veya dizeye uygulanan normal ifade.
  • limit: Oluşan dizideki maksimum değer sayısı. Bu değer atlanırsa veya sıfırsa, düzenli ifadeyle eşleşen her alt dize döndürülür.

Bir Dize Nasıl Bölünür? Java Sınırlayıcı ile

Aşağıdaki örnek, bir dizenin nasıl bölüneceğini göstermektedir. Java Ayırıcı ile.

Diyelim ki adında bir dize değişkenimiz var. strMain Birkaç kelimeden oluşuyor — Alfa, Beta, Gama, Delta, Sigma — hepsi virgülle (,) ayrılmış.

 Bir Dizeyi Böl Java

Burada tüm dizeleri tek tek istiyorsak, mümkün olan en iyi model onu virgül temelinde bölmek olacaktır. Böylece aşağıdaki gibi beş ayrı dize elde edeceğiz:

  • Alfa
  • Deneme
  • Gama
  • Delta
  • Sigma

dizeyi kullan bölmek yöntem Java Bölünmesi gereken dizeye karşı ayırıcıyı argüman olarak sağlayın.

Bu Java dizeyi sınırlayıcı büyük/küçük harfe göre bölerseniz, ayırıcı bir virgüldür (,) ve sonucu Java dizeyi virgül işlemiyle bölmek size dizi bölünmesini sağlayacaktır.

class StrSplit{
  public static void main(String []args){
   String strMain = "Alpha, Beta, Delta, Gamma, Sigma";
    String[] arrSplit = strMain.split(", ");
    for (int i=0; i < arrSplit.length; i++)
    {
      System.out.println(arrSplit[i]);
    }
  }
}

Koddaki döngü yalnızca her birini yazdırır Java Split fonksiyonundan sonra diziden dizeyi ayırın. Java, Aşağıda gösterildiği gibi.

Beklenen çıktı:

Alpha
Beta
Delta
Gamma
Sigma

Örnek: Java Regex ve uzunluk ile String split() yöntemi

Örneğin, split fonksiyonundan sonra yalnızca ilk 'n' öğeye ihtiyacınız olan bir durumu ele alalım. JavaAncak dizenin geri kalanının olduğu gibi kalmasını istiyorum. Çıktı şöyle bir şey olmalı:

  1. Alfa
  2. Deneme
  3. Delta, Gama, Sigma

Bu, split() işlemine başka bir argüman daha geçirilerek gerçekleştirilebilir. Javave bu da gerekli dize sayısının sınırı olacaktır.

Aşağıdaki split metodu kodunu inceleyin. Java:

class StrSplit2{
  public static void main(String []args){
   String strMain = "Alpha, Beta, Delta, Gamma, Sigma";
    String[] arrSplit_2 = strMain.split(", ", 3);
    for (int i=0; i < arrSplit_2.length; i++){
      System.out.println(arrSplit_2[i]);
    }
  }
}

Beklenen çıktı:

Alpha
Beta
Delta, Gamma, Sigma

3'lük bir limitin tam olarak üç öğe ürettiğini unutmayın: ilk iki ayırıcıya uyulur ve ikinci ayırıcıdan sonraki her şey üçüncü öğe olarak bir arada tutulur.

Bir dize nasıl bölünür Java Uzaya göre

Bir dizeyi boşlukla bölmek istediğiniz bir durumu düşünün. İşte bölünmüş bir dize. Java değişken adlı strMain birkaç kelimeden oluşmuştur: Hoş Geldiniz Guru99.

public class StrSplit3{
public static void main(String args[]){
String strMain = "Welcome to Guru99";
String[] arrSplit_3 = strMain.split("\\s");
    for (int i=0; i < arrSplit_3.length; i++){
      System.out.println(arrSplit_3[i]);
    }
  }
}

Beklenen çıktı:

Welcome
to
Guru99

Model \\s Tek bir boşluk karakteriyle eşleşir. Kullanın \\s+ Bunun yerine, kelimelerin birden fazla boşlukla ayrılabileceği durumlarda kullanılır; aksi takdirde her fazladan boşluk boş bir öğe oluşturur.

Bölme işlemi sırasında boş dizeleri nasıl koruyabilirsiniz? Java

Davranışlardan biri split() İlk karşılaştıklarında neredeyse herkesi şaşırtıyor: arkadan gelen boş teller sessizce atılıyor. Bölünme "a,b,," Virgülle ayrılmış bir sorgu, dört değil iki öğe döndürür; çünkü varsayılan sıfır sınırı, dizinin sonundaki tüm boş alanları atar.

Bu durum, verilerin konumsal olduğu durumlarda önem kazanır; örneğin, sonunda eksik bir değer bulunan bir CSV satırında, sütun hala boş kalır. Bu boşlukların kaybolması, sonraki tüm indekslerin konumunu değiştirir.

Geçen negatif Sınır onları koruyor:

String row = "Alpha,Beta,,";

// Default: trailing empty fields removed -> length 2
String[] a = row.split(",");
System.out.println(a.length);        // prints 2

// Negative limit: every field preserved -> length 4
String[] b = row.split(",", -1);
System.out.println(b.length);        // prints 4

Her durum için geçerli üç kural vardır. Bir sınır... sıfırVarsayılan ayar olan bu seçenek, deseni mümkün olduğunca çok kez uygular ve ardından sondaki boş dizeleri atar. pozitif Limit, deseni en fazla limit eksi bir kez uygular, bu nedenle son eleman, tıpkı daha önceki limit 3 örneğinde gösterildiği gibi, dokunulmamış kalanı içerir. A negatif Limit, deseni mümkün olduğunca çok kez uygular ve sondakiler de dahil olmak üzere tüm boş alanları korur.

Baştaki boş dizeler yine farklı davranır: bölme ",a,b" Sınır ne olursa olsun, desen sıfır konumunda eşleştiği için her zaman boş bir ilk öğe üretir. Bunu önlemek için girdiyi kırpın veya elde edilen sonucu filtreleyin. dizi kullanmadan önce.

split(), StringTokenizer ve Pattern.split(): Hangisini Kullanmalı?

Java Bu, bir dizeyi parçalara ayırmanın üç yolunu sunar. Bunlar, kabul ettikleri ayırıcı türü, döndürdükleri değer ve kalıbın bir kez mi yoksa her çağrıda yeniden mi derlendiği açısından farklılık gösterir; bu da bölme işlemi bir döngü içinde gerçekleştiğinde önem kazanır.

Görünüş Dize.split() StringTokenizer Desen.bölme()
Sınırlayıcı Düzenli ifade Tek karakterlerden oluşan küme Düzenli ifade
Geri dönüşler Sicim[] Numaralandırma yoluyla belirteçler Sicim[]
Derlenen desen Her aramada Uygulanamaz Bir kez kullanıldı, sonra tekrar kullanıldı.
Boş alanları korur. Sadece negatif limit ile asla Sadece negatif limit ile
Durum Tavsiye edilen Eski sürüm, uyumluluk amacıyla saklanmıştır. Döngülerde önerilir

Kullanım String.split() Sıradan, tek seferlik işler için, yazması en kısa ve anlaşılır olduğu için tercih edilir. Önceden derlemek için: Pattern.compile(",").split(text) Döngü içinde bölme işlemi yaparken, normal ifade her yinelemede değil, yalnızca bir kez derlendiği için bu durumdan kaçının. StringTokenizer Yeni kodda yer almaktadır; yalnızca geriye dönük uyumluluk için korunmuştur.

ortak Java split() Hataları ve Nasıl Düzeltilir

Hemen hemen her sorunla ilgili split() tracBu durum iki nedenden birine bağlanabilir: argüman, sabit bir dize yerine normal bir ifadedir veya yukarıda açıklanan limit kuralları alanları beklenmedik şekilde atıyor. Aşağıdaki her hata, belirtisini ve çözümünü belirtir.

  • Noktaya göre bölme işlemi boş bir dizi döndürür: "1.2.3".split(".") Nokta bir regex joker karakteri olduğundan, her karakterle eşleşir. Bunu şu şekilde kaçış karakteri olarak kullanın: split("\\.").
  • Bir borunun çatlaması garip bir şekilde davranır: Normal ifadelerde dikey çizgi (boru) alternasyonu ifade eder. Bunu şu şekilde kaçış karakteriyle belirtin: split("\\|").
  • Uyumsuz türler hatası: sonuç şuna atandı: StringDeğişkeni şu şekilde tanımlayın: String[].
  • Beklenmeyen boş ilk öğe: Ayırıcı karakter girişin başında yer alıyor. Önce dizeyi kırpın.
  • Sonunda eksik değerler var: Varsayılan sınır nedeniyle sondaki boş alanlar atıldı. Başarılı -1 ikinci argüman olarak.
  • NullPointerException: split() Null referans üzerinde çağrı yapıldı. Bölme işleminden önce null olup olmadığını kontrol edin, çünkü yöntem null'u işleyemez.

SSS

Örneğin, bir karakter sınıfı kullanın. split("[,;]")Virgül veya noktalı virgül ile bölünebilen bu yapı, alternatif olarak da kullanılabilir: split(",|;").

Evet. Diziyi şununla sarın: Arrays.asList(text.split(",")) sabit boyutlu bir görünüm için veya new ArrayList<>(Arrays.asList(...)) Liste daha sonra değiştirilmesi gerektiğinde.

Evet. AI Araçlar, tanımlanmış bir formattan çalışan bir model oluşturur ve her bir belirteci açıklar. Sonucu, boş alanlar ve tırnak içinde yer alan değerler gibi uç durumlara karşı test edin ve ardından güvenin.

Yapay zekâ asistanları, beklenmedik dizi uzunluğunun üç olası açıklamasından hangisinin kaçış karakteri kullanılmamış bir meta karakter, atılmış bir sondaki alan veya baştaki bir ayırıcı karakter olduğunu belirler.

Sadece basit veriler için geçerlidir. Tırnak içindeki alanlardaki virgülleri veya satır sonlarını işleyemez, bu nedenle gerçek dosyalar için özel bir CSV kütüphanesi daha güvenlidir. Bunları satır satır okumakla ilgili sorun yaşarsınız. BufferedOkuyucu Bu tür bir kütüphaneyle iyi uyum sağlar.

Bu yazıyı şu şekilde özetleyin: