我有4个字符串:
"h:/a/b/c"
"h:/a/b/d"
"h:/a/b/e"
"h:/a/c"
Run Code Online (Sandbox Code Playgroud)
我想找到这些字符串的公共前缀,即"h:/a".怎么找到?
通常我会用分隔符拆分字符串'/'并将其放在另一个列表中,依此类推.
有没有更好的方法呢?
我有一个文件和目录列表List<string> pathes.现在我想计算每个路径彼此共享的最深的公共分支.
我们可以假设它们都有共同的路径,但这在开始时是未知的.
假设我有以下三个条目:
这应该得到结果:C:/ Hello /因为地球正在打破子目录的这个"链".
第二个例子:
- > C:/ Hello/World/This/Is /
你会怎么做?我尝试使用string.split(@"/")并从第一个字符串开始,并检查此数组的每个部分是否包含在其他字符串中.但是,这将是一个非常昂贵的调用,因为我正在迭代(list_of_entries)^ list_of_entries.有没有更好的解决方案?
我目前的尝试将类似于以下(C#+ LINQ):
public string CalculateCommonPath(IEnumerable<string> paths)
{
int minSlash = int.MaxValue;
string minPath = null;
foreach (var path in paths)
{
int splits = path.Split('\\').Count();
if (minSlash > splits)
{
minSlash = splits;
minPath = path;
}
}
if (minPath != null)
{
string[] splits = minPath.Split('\\');
for (int i = 0; i …Run Code Online (Sandbox Code Playgroud)