Aracılığıyla paylaş


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.

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.

Bahşiş

Bir dizeyi bölmek için yapay zeka yardımı kullanabilirsiniz.

Bir dizeyi sözcüklere bölmek

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)
{
    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++)
{
    Console.WriteLine($"Index {i}: <{words[i]}>");
}

String.Split için birçok aşırı yük bulunur. Bu aşırı yüklemeler, dizeleri bölme davranışını özelleştirir:

  • Ayırıcıları char değerleri veya string değerleri olarak belirtebilirsiniz.
  • Bir ayırıcı veya birden çok ayırıcı belirtebilirsiniz. Birden çok ayırıcı belirtirseniz, bunların tümü aynı türde olmalıdır ( char veya string).
  • Döndürülecek en fazla alt dize sayısını belirtebilirsiniz.
  • Yinelenen ayırıcı karakterlerin yoksayılıp yoksayılacağını belirtebilir veya dönüş değerinde boş alt dizeler oluşturabilirsiniz.
  • Döndürülen alt dizelerdeki başlangıç ve bitiş boşluklarının kaldırılıp kaldırılmadığını belirtebilirsiniz.

Kalan örneklerde bu davranışların her birini göstermek için farklı aşırı yüklemeler kullanılır.

Dizinler hakkında daha fazla bilgi için Dizinleri ve aralıkları keşfetme makalesine bakın.

Birden çok ayırıcı belirtme

String.Split birden çok ayırıcı karakter kullanabilir. Aşağıdaki örnekte boşluklar, virgüller, noktalar, iki nokta ve sekmeler ayırıcı karakter olarak kullanılır ve bunlar Split'e bir dizi olarak geçirilir. 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";
Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(delimiterChars);
Console.WriteLine($"{words.Length} words in text:");

foreach (var word in words)
{
    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";
Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(delimiterChars);
Console.WriteLine($"{words.Length} words in text:");

foreach (var word in words)
{
    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";
Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(separatingStrings, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine($"{words.Length} substrings in text:");

foreach (var word in words)
{
    Console.WriteLine(word);
}

Çıkış boyutunu sınırla

Aşağıdaki örnekte, çıkışın kaynak dizedeki ilk dört alt dizeyle nasıl sınırlanması gösterilmektedir.

string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ', 4, StringSplitOptions.None);

foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

Boş alt dizeleri kaldır

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)
{
    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.

Boşluğu kırp

Aşağıdaki örnekte, kırpma girdilerinin etkisi gösterilmektedir:

string numerals = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10";
string[] words = numerals.Split(',', StringSplitOptions.TrimEntries);

Console.WriteLine("Trimmed entries:");
foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}
words = numerals.Split(',', StringSplitOptions.None);
Console.WriteLine("Untrimmed entries:");
foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

Düzgün kesilmemiş girişlerin sayılardan önce fazladan boşluk bulunmaktadır.

Dizeyi bölmek için yapay zeka kullanma

C# dilinde kullanarak String.Split dizeleri bölmek için kod oluşturmak için GitHub Copilot gibi yapay zeka araçlarını kullanabilirsiniz. gereksinimlerinize göre dizeleri ve sınırlayıcıları kullanmak için istem özelleştirebilirsiniz.

Aşağıdaki metinde Copilot Sohbeti için örnek bir istem gösterilmektedir:

Generate C# code to use Split.String to split a string into substrings.
Input string is "You win some. You lose some." Delimiters are space and period.
Provide example output.

GitHub Copilot yapay zeka ile desteklendiğinden sürprizler ve hatalar mümkündür. Daha fazla bilgi için bkz. Copilot Sıkça Sorulan Sorular.

Ayrıca bkz.