C #: String split, возвращающий список строк И список разделителей? - PullRequest
4 голосов
/ 13 июня 2010

Есть ли в C # встроенный способ разбить текст на массив слов и разделителей?То, что я хочу:

text = "word1 + word2 - word3";
string[] words = text.Split(new char[] { '+', '-'});
//Need list '+', '-' here?

Есть идеи?Очевидно, я могу просто обработать текст вручную ...:)

Ответы [ 2 ]

9 голосов
/ 13 июня 2010

Используйте Regex.split () с захватом скобок http://msdn.microsoft.com/en-us/library/byy2946e.aspx

string input = @"07/14/2007";   
string pattern = @"(-)|(/)";

foreach (string result in Regex.Split(input, pattern)) 
{
   Console.WriteLine("'{0}'", result);
}
// In .NET 1.0 and 1.1, the method returns an array of
// 3 elements, as follows:
//    '07'
//    '14'
//    '2007'
//
// In .NET 2.0, the method returns an array of
// 5 elements, as follows:
//    '07'
//    '/'
//    '14'
//    '/'
//    '2007'
0 голосов
/ 13 июня 2010

Не то, чтобы я знал, но я полагаю, вы могли бы сделать это с помощью регулярного выражения. Просто напишите его, чтобы выбрать только разделители, а затем используйте Regex.Matches, и возвращаемая коллекция должна содержать разделители. См. здесь для получения дополнительной информации, включая короткий образец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...