Способы разбиения строки на список в C#

Способы разбиения строки на список в C#

Способы разбиения строки на список в C#

Разбиение строки на части — одна из базовых задач в программировании. В C# существует несколько удобных способов превратить строку в список строк (или массив), используя различные разделители, включая символы, подстроки и регулярные выражения. В этой статье рассмотрим основные способы решения этой задачи.

1. Разделение с помощью String.Split()

Метод String.Split() позволяет разделить строку по одному или нескольким символам или строкам.

Пример 1: Разделение по символу

string input = "яблоко,банан,груша";

string[] parts = input.Split(',');



List<string> list = new List<string>(parts);

Пример 2: Разделение по нескольким символам

string input = "яблоко;банан,груша";

string[] parts = input.Split(new[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries);

2. Разделение по строке (например, перенос строки)

Если строка содержит переносы строк, можно использовать:

string input = "строка1rnстрока2nстрока3";

string[] lines = input.Split(new[] { "rn", "n" }, StringSplitOptions.None);

Можно также преобразовать в список:

List<string> lineList = new List<string>(lines);

3. Разделение с использованием регулярных выражений (Regex.Split)

Метод Regex.Split() полезен, когда нужно разделить по шаблону, а не по фиксированному символу.

Пример: Разделение по пробелам и табуляции

using System.Text.RegularExpressions;



string input = "яблокоtбанан  груша";

string[] words = Regex.Split(input, @"s+");

s+ означает «один или несколько пробельных символов».

4. LINQ + Split() для фильтрации и обработки

Можно комбинировать Split с LINQ, чтобы сразу обрабатывать результат:

using System.Linq;



string input = "яблоко,,банан,,груша";

List<string> list = input

    .Split(',', StringSplitOptions.RemoveEmptyEntries)

    .Select(s => s.Trim())

    .ToList();

5. Разделение с использованием Span (для высокой производительности)

Начиная с C# 7.2 и .NET Core, можно использовать Span и ReadOnlySpan для эффективного разбиения без создания дополнительных строк в памяти. Этот способ сложнее, но быстрее:

ReadOnlySpan<char> span = "яблоко,банан,груша".AsSpan();

int index;

while ((index = span.IndexOf(',')) != -1)

{

    var word = span.Slice(0, index);

    Console.WriteLine(word.ToString());

    span = span.Slice(index + 1);

}

Console.WriteLine(span.ToString()); // последняя часть


Источник

НЕТ КОММЕНТАРИЕВ

Оставить комментарий