C dilinde String.Split kullanarak dizeleri ayırma#
yöntemi, String.Split giriş dizesini bir veya daha fazla sınırlayıcıya göre bölerek bir alt dize dizisi oluşturur. Bu yöntem genellikle sözcük sınırlarındaki bir dizeyi ayırmanın en kolay yoludur. Ayrıca, dizeleri diğer belirli karakter veya dizelerde bölmek için de kullanılır.
Not
Bu makaledeki C# örnekleri Try.NET satır içi kod çalıştırıcısında ve oyun alanında çalıştırılır. Etkileşimli bir pencerede örnek çalıştırmak için Çalıştır düğmesini seçin. Kodu yürüttkten sonra yeniden Çalıştır'ı seçerek kodu değiştirebilir ve değiştirilen kodu çalıştırabilirsiniz. Değiştirilen kod etkileşimli pencerede çalışır veya derleme başarısız olursa, etkileşimli pencerede tüm C# derleyicisi hata iletileri görüntülenir.
Aşağıdaki kod, ortak bir tümceciği her sözcük için bir dize dizisine böler.
string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');
foreach (var word in words)
{
System.Console.WriteLine($"<{word}>");
}
Ayırıcı karakterin her örneği, döndürülen dizide bir değer üretir. C# içindeki diziler sıfır dizinli olduğundan, dizideki her dize 0'dan eksi 1 özelliği tarafından Array.Length döndürülen değere dizinlenir:
string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');
for (int i = 0; i < words.Length; i++)
{
System.Console.WriteLine($"Index {i}: <{words[i]}>");
}
Ardışık ayırıcı karakterler, boş dizeyi döndürülen dizide bir değer olarak üretir. Aşağıdaki örnekte boşluk karakterini ayırıcı olarak kullanan boş bir dizenin nasıl oluşturulduğunu görebilirsiniz.
string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');
foreach (var word in words)
{
System.Console.WriteLine($"<{word}>");
}
Bu davranış, tablo verilerini temsil eden virgülle ayrılmış değerler (CSV) dosyaları gibi biçimleri kolaylaştırır. Ardışık virgüller boş bir sütunu gösterir.
Döndürülen dizideki boş dizeleri dışlamak için isteğe bağlı StringSplitOptions.RemoveEmptyEntries bir parametre geçirebilirsiniz. Döndürülen koleksiyonun daha karmaşık bir şekilde işlenmesi için LINQ kullanarak sonuç dizisini değiştirebilirsiniz.
String.Split birden çok ayırıcı karakter kullanabilir. Aşağıdaki örnekte boşluklar, virgüller, nokta, iki nokta üst üste ve sekmeler, bir diziye geçirilen karakterleri ayırmak için Split kullanılır. Kodun altındaki döngü, döndürülen dizideki sözcüklerin her birini görüntüler.
char[] delimiterChars = { ' ', ',', '.', ':', '\t' };
string text = "one\ttwo three:four,five six seven";
System.Console.WriteLine($"Original text: '{text}'");
string[] words = text.Split(delimiterChars);
System.Console.WriteLine($"{words.Length} words in text:");
foreach (var word in words)
{
System.Console.WriteLine($"<{word}>");
}
Herhangi bir ayırıcının ardışık örnekleri, çıkış dizisindeki boş dizeyi üretir:
char[] delimiterChars = { ' ', ',', '.', ':', '\t' };
string text = "one\ttwo :,five six seven";
System.Console.WriteLine($"Original text: '{text}'");
string[] words = text.Split(delimiterChars);
System.Console.WriteLine($"{words.Length} words in text:");
foreach (var word in words)
{
System.Console.WriteLine($"<{word}>");
}
String.Split bir dize dizisi alabilir (tek karakter yerine hedef dizeyi ayrıştırma için ayırıcı görevi üstleyen karakter dizileri).
string[] separatingStrings = { "<<", "..." };
string text = "one<<two......three<four";
System.Console.WriteLine($"Original text: '{text}'");
string[] words = text.Split(separatingStrings, System.StringSplitOptions.RemoveEmptyEntries);
System.Console.WriteLine($"{words.Length} substrings in text:");
foreach (var word in words)
{
System.Console.WriteLine(word);
}