我对C#很新颖,我试图使用/
分隔符将一些数据拆分为字符串数组。数据来源为:使用'/'分隔符从其余数据拆分Url
我想有:1
和London
和https://media.timeout.com/images/100644443/image.jpg
分开。
,但是当我这样做:
var x = obj.Split('/');
的URL也被分成几部分明显。除了更改分隔符外,是否还有任何解决方法?
我对C#很新颖,我试图使用/
分隔符将一些数据拆分为字符串数组。数据来源为:使用'/'分隔符从其余数据拆分Url
我想有:1
和London
和https://media.timeout.com/images/100644443/image.jpg
分开。
,但是当我这样做:
var x = obj.Split('/');
的URL也被分成几部分明显。除了更改分隔符外,是否还有任何解决方法?
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);
谢谢,这正是我一直在寻找的。很好很简单。 :) – Thomas
你可以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 };
这是不漂亮,但我不知道另一种方式来做到这一点
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);
忽略标记 - 试图删除这个,但不能在手机上 –
也适用,但只有在我改变了以下内容: partB = obj.Replace(partA.toString(),string.Empty);谢谢您的回答。 – Thomas
obj.Split(new[] {'/'}, 3)
String.Split Method (Char[], Int32)
...
计数
类型:System.Int32
子的最大数量返回。...
如果有超过指望在这种情况下子,第一计数减1子在第一计数返回减去返回值的1个元素,而在这种情况下,剩余的字符在返回值的最后一个元素中返回。
我已经接受了一个答案,所以我能做的就是对此表示非常感谢。最好和最短的方式! – Thomas
https://msdn.microsoft.com/en-us/library/c1bs0eda(v=vs.110).aspx'count = 3'有什么问题? * count 类型:System.Int32 要返回的最大子字符串数。* –