Могу ли я разбить строку в стиле c # VB6, не ссылаясь на Microsoft.VisualBasic? - PullRequest
2 голосов
/ 30 сентября 2008

К сожалению, похоже, что нет строки. Split (разделитель строк), только string.Split (char speparator).

Я хочу разбить мою строку на основе многосимвольного разделителя, как в VB6. Есть ли простой (то есть, не путем ссылки на Microsoft.VisualBasic или изучения RegExes) способ сделать это в c #?

РЕДАКТИРОВАТЬ: Использование .NET Framework 3.5.

Ответы [ 6 ]

8 голосов
/ 01 октября 2008

String.Split() имеет другие перегрузки. Некоторые из них принимают string[] аргументов.

string original = "first;&second;&third";
string[] splitResults = original.Split( new string[] { ";&" }, StringSplitOptions.None );
1 голос
/ 01 октября 2008

Какая версия .Net? По крайней мере 2.0 и выше включает следующие перегрузки:

.Split(string[] separator, StringSplitOptions options)  
.Split(string[] separator, int count, StringSplitOptions options)

Теперь, если бы они только исправили это, чтобы принять любой IEnumerable вместо просто массива.

1 голос
/ 01 октября 2008

регулярное выражение для разбиения строки чрезвычайно простое, поэтому я бы пошел по этому маршруту.

http://msdn.microsoft.com/en-us/library/8yttk7sy.aspx

0 голосов
/ 06 февраля 2010

Я использую это в .NET 2.0 все время.

string[] args = "first;&second;&third".Split(";&".ToCharArray(),StringSplitOptions.RemoveEmptyEntries);
0 голосов
/ 01 октября 2008
 string[] stringSeparators = new string[] {"[stop]"};
    string[] result;
result = someString.Split(stringSeparators, StringSplitOptions.None);

через http://msdn.microsoft.com/en-us/library/tabh47cf.aspx

0 голосов
/ 01 октября 2008

Версия regex, вероятно, красивее, но тоже работает:

string[] y = { "bar" };

string x = "foobarfoo";
foreach (string s in x.Split(y, StringSplitOptions.None))
      Console.WriteLine(s);

Это напечатает foo дважды.

...