2011-12-16 3 views
1

Можно ли использовать String.Split без разрезающего разделителя из струны?String.Split cut separator

Например, у меня есть строка

convertSource = "http://www.domain.com http://www.domain1.com"; 

Я хочу построить массив и использовать код ниже

convertSource.Split(new[] { " http" }, StringSplitOptions.RemoveEmptyEntries) 

я получаю такой массив

[1] http://www.domain.com 
[2] ://www.domain1.com 

Я хотел бы сохранить HTTP, Кажется, String.Split не только разделяет строку, но и отключает разделитель.

+4

но вы должны разделить пробелом «» не HTTP, поможет ли это? –

+3

Что делать, если URL-адрес содержит «http» сам по себе? Как 'http: // www.http.com /'. Сначала вы должны определить четкие правила, которые ограничивают то, что может быть вашим вводом. –

+0

@DavidePiras Я не могу разделить пространство, потому что URL-адрес может содержать пробелы. – Tomas

ответ

4

Это орет для регулярных выражений:

Regex regEx = new Regex(@"((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+)"); 
Match match= regEx.Match("http://www.domain.com http://www.domain1.com"); 

IList<string> values = new List<string>(); 
while (match.Success) 
{ 
    values.Add(match.Value); 
    match = match.NextMatch(); 
} 
1

Это потому, что вы используете " http" в качестве разделителя.

Попробуйте это:

метод
string separator = " "; 
convertSource.Split(separator.ToCharArray(), StringSplitOptions.RemoveEmptyEntries) 

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

Из того, что вы говорите, что вы хотите сделать там other ways разделить строку держа разделители, а затем, если вы хотите, чтобы удалить начальные и конечные пробелы из вашей строки, то я wouuld предположить, что вы используете .Trim() метод: convertSource.Trim()

+1

вместо of new [] {""} Я думаю, вы можете использовать '' –

+0

Я не могу разделить пространство, потому что URL может содержать пробелы – Tomas

+1

@DavidePiras, вы должны включить новый [] {""}, потому что только с помощью «» вы сможете скомпилировать ошибка. Такой метод не найден ... – Tomas