Могу ли я разделить строку в стиле С# VB6 без ссылки на Microsoft.VisualBasic?
Вопрос
К сожалению, похоже, нет string.Split(разделитель строк), есть только string.Split(разделитель символов).
Я хочу разбить свою строку на основе многосимвольного разделителя, как в VB6.Есть ли простой (то есть без ссылки на Microsoft.VisualBasic или изучения RegEx) способ сделать это на С#?
РЕДАКТИРОВАТЬ:Использование .NET Framework 3.5.
Решение
String.Split()
имеет другие перегрузки.Некоторые из них принимают string[]
аргументы.
string original = "first;&second;&third";
string[] splitResults = original.Split( new string[] { ";&" }, StringSplitOptions.None );
Другие советы
регулярное выражение для разделения строки чрезвычайно просто, поэтому я бы пошел по этому пути.
Какая версия .Net?По крайней мере, версия 2.0 и более поздние версии включают следующие перегрузки:
.Split(string[] separator, StringSplitOptions options)
.Split(string[] separator, int count, StringSplitOptions options)
Теперь, если бы они только исправили это, чтобы принимать любой IEnumerable<string> вместо просто массива.
Версия с регулярным выражением, вероятно, красивее, но это тоже работает:
string[] y = { "bar" };
string x = "foobarfoo";
foreach (string s in x.Split(y, StringSplitOptions.None))
Console.WriteLine(s);
Это напечатает foo дважды.
string[] stringSeparators = new string[] {"[stop]"};
string[] result;
result = someString.Split(stringSeparators, StringSplitOptions.None);
с помощью http://msdn.microsoft.com/en-us/library/tabh47cf.aspx
Я постоянно использую это в .NET 2.0.
string[] args = "first;&second;&third".Split(";&".ToCharArray(),StringSplitOptions.RemoveEmptyEntries);