如何在包含许多“/”字符的特定“/”处拆分字符串

时间:2014-05-06 19:43:04

标签: c#

例如:

我正在使用这个字符串:

/child1/child2/child3/

我想要的结果是:

/child1/child2/

请注意,每个孩子都可以有不同的长度。例如:

/someString/anotherString/andOneMore/

字符串也可以(在最后一种情况下我需要保持“/”):

/

3 个答案:

答案 0 :(得分:2)

如果您将单独处理/字符串:

private string TruncatePath(string path)
{
    if (path == "/")
        return path;

    var parts = path.Split(new []{'/'}, StringSplitOptions.RemoveEmptyEntries);
    return String.Format("/{0}/", String.Join("/", parts.Take(2)));
}

答案 1 :(得分:1)

这是替换不分裂的工作。使用正则表达式,我们匹配前两个项目,然后输出它们。

var pattern = @"(/[^/]+/)[^/]+/([^/]+/)";

Regex.Replace("/child1/child2/child3/",
              pattern,
              "$1$2"); // result `/child1/child3/`

Regex.Replace("/someString/anotherString/andOneMore/",
              pattern,
              "$1$2"); // result `/someString/andOneMore/`

Regex.Replace("/",
              pattern,
              "$1$2"); // result `/`

答案 2 :(得分:1)

所以你想把一个字符串“at”分给一个给定的斜杠?

int splitAt = 3;
var parts = "dsf/df/ss/sdfsfd/fsdfsd".Split('/').ToList();
var headParts = parts.Take(splitAt);
var tailParts = parts.Skip(splitAt);
var head = String.Join("/",headParts.ToArray()).Dump();
var tail = String.Join("/",tailParts.ToArray()).Dump();