我可以有两个字符串行的情况。C#以优雅的方式拆分字符串
string mystring = "/aaa/bbb/ccc/ddd/eee"
和
string mystring2 = "aaa/bbb/ccc/ddd/eeee/";
我当然可以通过“/”使用拆分,并做一些检查,但我找了一些优雅的解决方案。
如果我做mystring.Split('/')它可以在数组的第二或第三位置,我怎么知道它在哪里?
如何获得'ccc'?
谢谢!
我可以有两个字符串行的情况。C#以优雅的方式拆分字符串
string mystring = "/aaa/bbb/ccc/ddd/eee"
和
string mystring2 = "aaa/bbb/ccc/ddd/eeee/";
我当然可以通过“/”使用拆分,并做一些检查,但我找了一些优雅的解决方案。
如果我做mystring.Split('/')它可以在数组的第二或第三位置,我怎么知道它在哪里?
如何获得'ccc'?
谢谢!
你可以这样做:
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
将是相同的。
什么比String.Split方法更优雅?它接受分隔符并吐出一个拆分字符串的数组。
如果我做mystring.Split('/')它可以在数组的第二或第三位置,我怎么知道它在哪里? – 2012-03-07 15:04:09
你的问题不是很清楚,但是我会在黑暗中进行刺探,并假设你想忽略输入字符串开始和结尾的斜线所产生的空条目。
在这种情况下,你可以尝试:
String.Split(new string[] {"/"}, StringSplitOptions.RemoveEmptyEntries)
通过对OP问题的解释,这似乎是最干净的解决方案。 – Christoffer 2012-03-07 15:09:02
优雅与否,你仍然可以使用Split
和检查,这似乎是这个问题的条件:它以斜线开头或不?
string[] split = mystring.Split("/");
if (mystring.StartsWith("/"))
// index = 3;
else
// index = 2;
您可以检查结果的长度,只返回相关的结果。
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];
定义优雅的解决方案 – MilkyWayJoe 2012-03-07 15:02:01
什么是错的'string.split()'? – 2012-03-07 15:02:51
为什么你需要拆分,你需要检查什么? – Kaf 2012-03-07 15:04:06