基于分隔符的迭代循环中的子串构建

时间:2015-09-09 15:54:48

标签: c# delimiter

我对C#很新,遇到了麻烦。

我的字符串带有'/' - 分隔符:"1/2/10/4"

我在迭代循环时需要使用的字符串应如下所示:

i = 1; "1"
i = 2; "1/2"
i = 3; "1/2/10"
i = 4; "1/2/10/4"  

不知怎的,它应该在这里集成,但我不知道如何:

        var IDArray = Convert.ToString(NodesID).Split('/');
        for (int i = 0; i < Convert.ToString(NodesID).Count(x => x == '/')+2; i++)
        {
            string IDCheck = IDArray[i];
            string ???
        }

3 个答案:

答案 0 :(得分:1)

var IDArray = Convert.ToString(NodesID).Split('/');
var builder = new StringBuilder();
for (int i = 0; i < IDArray.Length; i++)
{
    builder.Append(IDArray[i]);
    var stringToUse = builder.ToString();

    //...
    //Use the stringToUse here. It contains exactly what you want.
    //...

    builder.Append("/");
}

一切都是不言自明的。如果您不太了解(或者我未能正确解释您的问题),请告诉我。

答案 1 :(得分:0)

我建议使用一个帮助方法来生成您正在寻找的所有子路径。这样的事情应该有效:

yield return

此方法使用名为IEnumerable<>的C#技巧,使其返回yield return,其中每个元素都基于提供给IEnumerable<>的内容。因此,返回的var subPaths = GetSubPaths("1/2/10/4").ToList(); for(int i = 0; i < subPaths.Count; i++) { Console.Write("i = " + i + "; "); Console.WriteLine(subPaths[i]); } 中的元素将代表您正在描述的每个子字符串组。

然后您可以根据需要使用此方法的结果:

{{1}}

答案 2 :(得分:0)

不完全是最易读的代码,但是linqy解决方案将是:

var list = YourInput.Split('/').Aggregate(new List<string>(), (l, el) => { l.Add(l.Count == 0 ? el : l[l.Count - 1] + "/" + el); return l; });

这将创建一个包含字符串的列表。