如何在特定的"/"当它包含许多"/"字符时

本文关键字:quot 包含许 字符 | 更新日期: 2023-09-27 18:02:07

例如:

我有这个字符串:

/child1/child2/child3/

我想要的结果是:

/child1/child2/

注意每个子节点的长度可以不同。例如:

/someString/anotherString/andOneMore/

字符串也可以只是(在最后一种情况下,我需要保持"/"原样):

/

如何在特定的"/"当它包含许多"/"字符时

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

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)));
}

这是一个替换而不是分割的作业。我们使用正则表达式匹配前两项,并简单地输出它们。

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 `/`

所以你想分割字符串"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();