2017-02-19 6 views
1

Я довольно новичок в C#, и я пытаюсь разделить некоторые данные на массив строк, используя разделитель /. Данные поступают как:Сплит Url из остальной части данных с использованием деления '/'

1/Лондон/https://media.timeout.com/images/100644443/image.jpg

Я хотел бы иметь: 1 и London и https://media.timeout.com/images/100644443/image.jpg отдельно.

, но когда я делаю это:

var x = obj.Split('/'); 

URL-адрес также разделен на части, очевидно. Есть ли какое-либо обходное решение для этого, кроме изменения разделителя?

+1

https://msdn.microsoft.com/en-us/library/c1bs0eda(v=vs.110).aspx Что случилось с 'count = 3'? * count Тип: System.Int32 Максимальное количество подстрок для возврата.* –

ответ

4
var someString = "1/London/https://media.timeout.com/images/100644443/image.jpg"; 

Используйте IndexOf метод, чтобы получить индекс https:

var index = someString.IndexOf("https") 

Затем вы можете разделить строку п ром начинаясь вплоть до индекса https:

var splitParts = someString.Substring(0, index - 1).Split('/'); 

И URL-адрес будет после того, как индекс https:

var urlPart = someString.Substring(index); 
+0

Спасибо, это именно то, что я искал. Ницца и просто. :) – Thomas

0

Вы можете найти IndexOf, чтобы найти первое, а затем второе вхождение '/'.

Что-то вроде этого (не проверено редактором):

s1 = obj.Substring(0, obj.IndexOf("/")); 
s2 = s1.Substring(0, s1.IndexOf("/")); 
s3 = s2.Substring(0, s2.IndexOf("/")); 

String[] output = new String[] { s1, s2, s3 }; 

Это не красиво, но я не знаю другого способа сделать это

0
var arr = obj.Split('/'); 
StringBuilder partA = new StringBuilder(); 
string partB = string.Empty; 
foreach (var item in arr) { 
if (item.ToLower().StartsWith("http")) { 
    partB = obj.Replace(partA.ToString(),string.Empty); 
    break; 
} 
partA.Append(item); 
partA.Append("/"); 
} 

Или

var partA = obj.Split('/',2); 
    var partB = obj.Replace(partA.ToString(),string.Empty); 
+0

Игнорировать флаг - попытка удалить это, но не может по телефону –

+1

Также работает, но только после того, как я изменил следующее: partB = obj.Replace (partA.toString(), string.Empty); Спасибо за ваш ответ. – Thomas

1

obj.Split(new[] {'/'}, 3)

String.Split Method (Char[], Int32)

...

Количество
Тип: System.Int32
Максимальное количество подстрок вернуться.

...

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

+0

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