Megosztás a következőn keresztül:


Sztringek elkülönítése a String.Split használatával C-ben#

A String.Split metódus egy részsztringtömböt hoz létre a bemeneti sztring egy vagy több elválasztó alapján történő felosztásával. Ez a módszer gyakran a legegyszerűbb módja annak, hogy elválassza a karakterláncot a szóhatárok mentén.

Feljegyzés

A cikkben szereplő C#-példák a Try.NET beágyazott kódfuttatóban és játszótéren futnak. Kattintson a Futtatás gombra egy példa interaktív ablakban való futtatásához. Miután végrehajtotta a kódot, módosíthatja és futtathatja a módosított kódot a Futtatás gombra kattintva. A módosított kód vagy az interaktív ablakban fut, vagy ha a fordítás sikertelen, az interaktív ablakban megjelenik az összes C#-fordító hibaüzenet.

Borravaló

A sztringek felosztásához használhatja az AI-segédet.

Karakterlánc szavakra bontása

Az alábbi kód az egyes szavakhoz tartozó sztringek tömbjeire osztja fel a gyakori kifejezéseket.

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

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

Az elválasztó karakter minden példánya létrehoz egy értéket a visszaadott tömbben. Mivel a C# tömbjei nulla indexelést alkalmaznak, a tömb minden sztringje a 0-tól a Array.Length tulajdonság által visszaadott értékig, mínusz 1-ig lesz indexelve.

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]}>");
}

Sok String.Split a túlterhelés. Ezek a túlterhelések meghatározzák a karaktersorok felosztásának viselkedését.

  • Az elválasztókat char értékként vagy string értékként adhatja meg.
  • Megadhat egy elválasztót vagy több elválasztót. Ha több elválasztójelet ad meg, mindegyiknek azonos típusúnak kell lennie (vagy charstring).
  • Megadhatja a visszaadni kívánt részsztringek maximális számát.
  • Megadhatja, hogy a program figyelmen kívül hagyja-e az ismétlődő elválasztó karaktereket, vagy üres részszűrést állít elő a visszatérési értékben.
  • Megadhatja, hogy a kezdő és a záró szóköz el legyen-e távolítva a visszaadott alsztringekből.

A többi példa különböző túlterheléseket használ az egyes viselkedések megjelenítéséhez.

Adjon meg több elválasztót

String.Split több elválasztó karaktert is használhat. Az alábbi példa szóközöket, vesszőket, pontokat, kettőspontokat és tabulátorokat használ elválasztó karakterekként, ezeket egy tömbbe adjuk át Split. A kód alján lévő hurok megjeleníti a visszaadott tömbben lévő összes szót.

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}>");
}

Az elválasztó egymást követő példányai létrehoznak egy üres sztringet a kimeneti tömbben:

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 szöveg egy tömbnyi sztringet (karaktersorozatok, amelyek elválasztóként működnek a célszöveg elemzéséhez, egyetlen karakter helyett) képes kezelni.

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);
}

Kimeneti méret korlátozása

Az alábbi példa bemutatja, hogyan korlátozhatja a kimenetet a forrássztring első négy részszúrására.

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}>");
}

Üres részszűrések eltávolítása

Az egymást követő elválasztó karakterek az üres sztringet adják meg értékként a visszaadott tömbben. Az alábbi példában láthatja, hogyan jön létre egy üres sztring, amely a szóköz karaktert választja elválasztóként.

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

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

Ez a viselkedés megkönnyíti az olyan formátumok használatát, mint a táblázatos adatokat képviselő vesszővel tagolt értékek (CSV-fájlok). Az egymást követő vesszők üres oszlopot jelölnek.

Megadhat egy opcionális StringSplitOptions.RemoveEmptyEntries paramétert a visszaadott tömb üres sztringjeinek kizárásához. A visszaadott gyűjtemény bonyolultabb feldolgozásához a LINQ használatával módosíthatja az eredményütemezést.

Térköz vágása

Az alábbi példa a bejegyzések vágásának hatását mutatja be:

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}>");
}

A nem feldolgozott bejegyzéseknek extra üres tér áll a számok előtt.

Sztring felosztása AI használatával

Az AI-eszközök, például a GitHub Copilot használatával kódokat hozhat létre sztringek String.Split felosztásához a C#-ban. Testre szabhatja a kérést, hogy a követelményeknek megfelelő sztringeket és elválasztójeleket használjon.

Az alábbi szöveg egy példakérést jelenít meg a Copilot-csevegéshez:

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.

A GitHub Copilot mesterséges intelligenciával működik, így meglepetések és hibák lehetségesek. További információ: Copilot gyakori kérdések.

Lásd még