2017-02-19 96 views
1

我对C#很新颖,我试图使用/分隔符将一些数据拆分为字符串数组。数据来源为:使用'/'分隔符从其余数据拆分Url

1 /伦敦/ https://media.timeout.com/images/100644443/image.jpg

我想有:1Londonhttps://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") 

然后你可以将字符串f ROM开始了,直到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