C #: разделение строки и не возвращение пустой строки - PullRequest
27 голосов
/ 12 сентября 2011

У меня есть строка:

a = "1;2;3;"

И я бы хотел split это так:

foreach (string b in a.split(';'))

Как я могу убедиться, что я возвращаю только 1, 2, 3, а не 'пустую строку'?

Если я разделю 1;2;3, тогда я получу то, что хочу. Но если я разделю 1;2;3;, тогда я получу дополнительную «пустую строку». Я принял предложения и сделал это:

string[] batchstring = batch_idTextBox.Text.Split(';', StringSplitOptions.RemoveEmptyEntries);

Однако я получаю следующие ошибки:

Ошибка 1 Наилучший перегруженный метод соответствует 'string.Split (params char []) 'имеет недопустимые аргументы C: \ Documents and Настройки \ agordon \ Мои документы \ Visual Studio 2008 \ Projects \ lomdb \ EnterData \ DataEntry \ DAL.cs 18 36 EnterData

Ошибка 2 Аргумент '2': невозможно преобразовать из 'System.StringSplitOptions' в 'char' C: \ Documents and Settings \ agordon \ Мои документы \ Visual Studio 2008 \ Projects \ lomdb \ EnterData \ DataEntry \ DAL.cs 18 68 EnterData

Ответы [ 7 ]

53 голосов
/ 12 сентября 2011

String.Split принимает массив при включении любого StringSplitOptions:

string[] batchstring = batch_idTextBox.Text.Split(new [] { ';' }, StringSplitOptions.RemoveEmptyEntries);

Если вам не нужны опции, синтаксис становится проще:

string[] batchstring = batch_idTextBox.Text.Split(';');
18 голосов
/ 12 сентября 2011

Использование StringSplitOptions.

a.Split(new char[] {';'}, StringSplitOptions.RemoveEmptyEntries);
5 голосов
/ 12 сентября 2011

Передача StringSplitOptions.RemoveEmptyEntries в метод Split.

EDIT

Метод Split не имеет перегрузки для разделения на один символ. Вам необходимо указать массив символов.

foo.Split(new char[] {';'}, StringSplitOptions.RemoveEmptyEntries);
1 голос
/ 31 августа 2017
string line="Hello! Have nice day."
string[] substr = line.Split(new[] {' '}, 2);

Выше кода разделит строку на две подстроки на основе первого пробела.substr [0] будет иметь "Hello!"substr [1] будет иметь "Хорошего дня".Здесь 2 в Split является целочисленным счетчиком, вы можете передать любое значение в соответствии с вашими требованиями.

1 голос
/ 12 сентября 2011

Использовать

a.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

Существует 4 перегрузки по .Split, две из них не поддерживают StringSplitOptions и используют формат params (поэтому вам не нужно создавать массивразделителей), два из них поддерживают StringSplitOptions и требуют массив char или string.

1 голос
/ 12 сентября 2011

Не знал о вариантах разделения. Если бы у вас не было этого, вы могли бы ...

a.Split(';').Where(s => s.Length > 0).ToArray();
1 голос
/ 12 сентября 2011

Дайте этому шанс:

string test = "1;2;3;";
test = String.Join(",", test.TrimEnd((char)59).Split((char)59));

string test = "1;2;3;";
test = String.Join(",", test.TrimEnd(';').Split(';'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...