我可以有两种字符串行。
string mystring = "/aaa/bbb/ccc/ddd/eee"
和
string mystring2 = "aaa/bbb/ccc/ddd/eeee/";
当然我可以使用'/'拆分并做一些检查,但我正在寻找一些优雅的解决方案。
如果我做mystring.Split('/')它可以在数组的第2或第3位置,我怎么知道它在哪里?
如何获得'ccc'?
谢谢!
答案 0 :(得分:7)
你的问题不是很清楚,但是我会在黑暗中进行一次尝试,并假设你想忽略输入字符串开头和结尾的斜杠所产生的空条目。
在这种情况下,您可以尝试:
String.Split(new string[] {"/"}, StringSplitOptions.RemoveEmptyEntries)
答案 1 :(得分:5)
myString.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries).ElementAt(2);
答案 2 :(得分:4)
您可以执行以下操作:
string mystring = "/aaa/bbb/ccc/ddd/eee";
string mystring2 = "aaa/bbb/ccc/ddd/eeee/";
string[] result = mystring.Trim({'/'}).Split('/');
string[] result2 = mystring2.Trim({'/'}).Split('/');
然后,result
和result2
将是相同的。
答案 3 :(得分:0)
什么比String.Split方法更优雅?它采用分隔符并吐出一个拆分字符串数组。
答案 4 :(得分:0)
优雅与否,您仍然可以使用Split
并检查似乎是问题的条件:是否以斜杠开头?
string[] split = mystring.Split("/");
if (mystring.StartsWith("/"))
// index = 3;
else
// index = 2;
答案 5 :(得分:0)
您可以检查结果的长度,只返回相关的结果。
var split = mystring.Split('/').Where(p => p.Length > 0).ToArray();
var split2 = mystring2.Split('/').Where(p => p.Length > 0).ToArray();
这会为两个字符串生成相同的结果。
然后,如果您需要确定数组中的位置,您可以简单地执行以下操作。
int position = Array.IndexOf(split, "ccc"); // Returns 2
int position2 = Array.IndexOf(split2, "ccc"); // Returns 2
最后,为了确认您获得了正确的位置/索引,您可以执行以下操作:
string string1 = split[position];
string string2 = split2[position2];