С#: разделение строки и отсутствие пустой строки
У меня есть строка:
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 EnterDatap >
Ошибка 2 Аргумент '2': невозможно преобразовать из 'System.StringSplitOptions' to 'char' C:\Documents and Settings\agordon\Мои документы \Visual Studio 2008\Projects\lomdb\EnterData\DataEntry\DAL.cs 18 68 EnterDatap >
Ответы
Ответ 1
String.Split принимает массив при включении любого StringSplitOptions
:
string[] batchstring = batch_idTextBox.Text.Split(new [] { ';' }, StringSplitOptions.RemoveEmptyEntries);
Если вам не нужны параметры, синтаксис становится проще:
string[] batchstring = batch_idTextBox.Text.Split(';');
Ответ 2
Используйте StringSplitOptions
.
a.Split(new char[] {';'}, StringSplitOptions.RemoveEmptyEntries);
Ответ 3
Передайте StringSplitOptions.RemoveEmptyEntries
методу Split.
ИЗМЕНИТЬ
Метод Split не имеет перегрузки для разбиения на один символ. Вам нужно указать массив символов.
foo.Split(new char[] {';'}, StringSplitOptions.RemoveEmptyEntries);
Ответ 4
Сделайте снимок:
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(';'));
Ответ 5
Не знаю о параметрах split. Если у вас не было этого, вы могли бы...
a.Split(';').Where(s => s.Length > 0).ToArray();
Ответ 6
Используйте
a.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
Есть 4 перегрузки .Split
, два из них не поддерживают StringSplitOptions
и используют формат params
(так что вам не нужно создавать массив сплиттеров), два из них поддерживают StringSplitOptions
и требуется массив из char
или string
.
Ответ 7
string line="Hello! Have nice day."
string[] substr = line.Split(new[] {' '}, 2);
Выше кода разделит строку на две подстроки на основе первого пространства.
substr [0] будет иметь "Hello!"
substr [1] будет иметь "Хороший день". Здесь 2 в Split - это целочисленный счетчик, вы можете передать любое значение на основе вашего требования.