c # разбить строку, только если найден разделитель - PullRequest
0 голосов
/ 28 августа 2018
string search = "Apple : 100";

string[] result = search .Split(':');

Работает нормально с выводом ниже:

result[0] ==> Apple
result[1] ==> 100

Но для этого:

string search  = "Apple";    
string[] result = search .Split(':');

Выходы:

result[0] ==> Apple

Почему вывод Apple? Я просто хочу пустой массив, если в поиске отсутствует разделитель string.

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Способ String.Split работает, возвращая массив с разделенными сегментами. Если разделитель отсутствует, то существует только один сегмент - вся строка. Из документации (под Сведения о возвращаемом значении ):

Если этот экземпляр не содержит ни одной из строк в разделителе, возвращаемый массив состоит из одного элемента, который содержит этот экземпляр.

Чтобы делать то, что вы хотите, вы можете сделать:

var result = search.Contains(':') ? search.Split(':') : new string[0];
0 голосов
/ 28 августа 2018

Если строка не содержит символа, который использовался в качестве разделителя, он возвращает массив, содержащий всю строку в качестве элемента массива. В вашем случае строка Apple не содержит разделителя. по этой причине массив содержит всю строку , т.е. Apple в качестве нулевого элемента

Ссылка: Функция MSDN Spit ()

...