Как разделить строки с помощью String.Split в C#
Метод String.Split создает массив подстрок, разбивая входную строку по одному или нескольким разделителям. Этот метод зачастую является самым простым способом разделить строку по границам слов. Он также используется для разбиения строк по другим конкретным символам или строкам.
Примечание.
Примеры C# в этой статье выполняются во встроенном средстве выполнения кода и на площадке Try.NET. Нажмите на кнопку Выполнить, чтобы выполнить пример в интерактивном окне. После выполнения кода вы можете изменить его и выполнить измененный код, снова нажав на кнопку Выполнить. Либо в интерактивном окне выполняется измененный код, либо, если компиляция завершается с ошибкой, в интерактивном окне отображаются все сообщения об ошибках компилятора C#.
Примеры String.Split
Следующий код разбивает обычную фразу на массив строк для каждого слова.
string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');
foreach (var word in words)
{
System.Console.WriteLine($"<{word}>");
}
Каждый экземпляр знака разделения создает значение в возвращаемом массиве. Так как массивы в C# не индексируются, каждая строка в массиве индексируется от 0 до значения, возвращаемого Array.Length свойством минус 1:
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]}>");
}
Последовательные знаки разделения создают пустую строку в виде значения в возвращаемом массиве. В следующем примере показано создание пустой строки с использованием символа пробела в качестве разделителя.
string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');
foreach (var word in words)
{
System.Console.WriteLine($"<{word}>");
}
Такое поведение упрощает работу с такими форматами, как файл данных с разделителями-запятыми (CSV), которые представляют табличные данные. Идущие подряд запятые представляют пустой столбец.
Чтобы исключить из возвращаемого массива все пустые строки, можно передать необязательный параметр StringSplitOptions.RemoveEmptyEntries. Для более сложной обработки возвращенной коллекции можно использовать LINQ, чтобы управлять результирующей последовательностью.
String.Split может использовать несколько знаков разделения. В следующем примере используются пробелы, запятые, точки, двоеточия и вкладки в качестве разделительных символов, которые передаются Split в массив. Цикл в конце кода отображает каждое из слов в возвращенном массиве.
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}>");
}
Последовательные экземпляры любого разделителя создают пустую строку в выходном массиве:
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 может принимать массив строк (в этом случае в качестве разделителей при анализе целевой строки используются последовательности символов, а не отдельные символы).
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);
}
Разделение строки с помощью GitHub Copilot
Вы можете использовать GitHub Copilot в интегрированной среде разработки для создания кода для разделения строк с помощью String.Split
C#.
Если вы используете Visual Studio 2022 версии 17.8 или более поздней, можно попробовать использовать GitHub Copilot на основе ИИ в Visual Studio , чтобы создать код для разделения входной строки на подстроки на основе одного или нескольких разделителей. Отправьте свой вопрос в виде запроса в окне чата Copilot, как показано в следующем примере. Вы также можете отправлять запросы с помощью встроенного чата в самом окне редактора.
Примечание.
GitHub Copilot работает СИ, поэтому возможны сюрпризы и ошибки. Обязательно проверьте любой созданный код или предложения. Дополнительные сведения об общем использовании GitHub Copilot, влиянии на продукты, надзоре и конфиденциальности см . в часто задаваемых вопросы о GitHub Copilot.
В следующем тексте показан пример запроса для Copilot Chat:
Создайте код C#, чтобы использовать Split.String разделение строки на подстроки. Входная строка — "Вы выигрываете некоторые. Вы потеряете некоторые". Разделители — это пространство и период. Укажите пример выходных данных.
Вы можете настроить запрос на использование строк и разделителей в соответствии с вашими требованиями.
Вы можете использовать функции чата, такие как команды косой черты, ссылки на файлы, методы или классы и потоки, чтобы задать намерение и получить лучшие ответы с контекстом области. Для существующего файла, открытого в интегрированной среде разработки, можно предложить GitHub Copilot с помощью встроенного чата /generate code to split string1 in #Filename by delimiter spaces
.
В следующем выходных данных показан пример ответа Copilot Chat:
Here is an example of how you can use the Split method in C# to split the string "You win some. You lose some." using space and period as delimiters:
using System;
class Program
{
static void Main()
{
string input = "You win some. You lose some.";
char[] delimiters = new char[] { ' ', '.' };
string[] substrings = input.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
foreach (string substring in substrings)
{
Console.WriteLine(substring);
}
}
}
**Example Output**
You
win
some
You
lose
some
Когда Copilot возвращает блок кода, ответ включает параметры для копирования кода, вставки кода в новый файл или предварительного просмотра выходных данных кода.
Примечание.
Результаты могут отличаться от того, что показано в примерах ответов. Модели искусственного интеллекта являются недетерминированными, что означает, что они могут возвращать разные ответы при появлении одного и того же вопроса. Это может быть связано с дополнительным обучением и адаптацией с течением времени, языковым изменением, изменениями в контексте, такими как журнал чата и многое другое.
Дополнительные сведения см. в разделе:
- Центр управления безопасностью GitHub Copilot
- GitHub Copilot в Visual Studio
- GitHub Copilot в VS Code