C#以优雅的方式分割字符串

时间:2012-03-07 15:00:35

标签: c# split

我可以有两种字符串行。

string mystring =  "/aaa/bbb/ccc/ddd/eee"

string mystring2 = "aaa/bbb/ccc/ddd/eeee/"; 

当然我可以使用'/'拆分并做一些检查,但我正在寻找一些优雅的解决方案。

如果我做mystring.Split('/')它可以在数组的第2或第3位置,我怎么知道它在哪里?

如何获得'ccc'?

谢谢!

6 个答案:

答案 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('/');

然后,resultresult2将是相同的。

答案 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];