我对C#很陌生,我正在尝试使用/
分隔符将一些数据拆分成字符串数组。数据如下:
我希望:1
和London
以及https://media.timeout.com/images/100644443/image.jpg
分开。
但是当我这样做时:
var x = obj.Split('/');
网址也明显分成了几个部分。除了更改分隔符之外,还有解决方法吗?
答案 0 :(得分: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('/');
并且网址将在https
:
var urlPart = someString.Substring(index);
答案 1 :(得分:1)
obj.Split(new[] {'/'}, 3)
String.Split Method (Char[], Int32)
...
计数
类型:System.Int32
要返回的最大子串数。...
如果此实例中有多个count子串,则第一个计数减1个子字符串将在第一个计数中返回返回值的1个元素,并且此实例中的其余字符将在返回的最后一个元素中返回值。
答案 2 :(得分: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 };
这不是很好,但我不知道另一种方法来做到这一点
答案 3 :(得分: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);