#c# #string #.net-4.0 #split
#c# #строка #.net-4.0 #разделить
Вопрос:
Как я могу разделить строку с помощью разделителя строк?
Я пытался:
string[] htmlItems = correctHtml.Split("<tr");
Я получаю сообщение об ошибке:
Cannot convert from 'string' to 'char[]'
Какой рекомендуемый способ разделить строку по заданному строковому параметру?
Комментарии:
1. Я не вижу никаких перегрузок, которые принимают строку в качестве единственного параметра. Я что-то упускаю? msdn.microsoft.com/en-us/library/system.string.split.aspx
2. @ChaosPandion: Вопрос в том, как бы я разделил строку по заданному слову.
Ответ №1:
Существует версия string.Split
, которая принимает массив строк и параметр options:
string source = "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]";
string[] stringSeparators = new string[] {"[stop]"};
string[] result = source.Split(stringSeparators, StringSplitOptions.None);
таким образом, даже если у вас есть только один разделитель, который вы хотите разделить, вам все равно придется передать его в виде массива.
Принимая ответ Майка Хофера за отправную точку, этот метод расширения немного упростит его использование.
public static string[] Split(this string value, string separator)
{
return value.Split(new string[] {separator}, StringSplitOptions.None);
}
Комментарии:
1. Спасибо, это сработало замечательно, хотя код немного запутанный. 🙂
Ответ №2:
Взгляните на Regex.Split
http://msdn.microsoft.com/en-us/library/aa332139 (v = против71).aspx
Ответ №3:
Разве это не та перегрузка, которую вы ищете? http://msdn.microsoft.com/en-us/library/1bwe3zdy.aspx
Ответ №4:
Вам также необходимо использовать параметр StringSplitOptions при разделении.
Ответ №5:
Напишите метод расширения:
public static string[] Split(this string value, string separator)
{
return value.Split(separator.ToCharArray());
}
Проблема решена.
Комментарии:
1. Хорошая идея, хотя эта реализация завершится неудачей, поскольку разделитель длиннее одного символа.