1

我有一些"paths"格式类似于:

/Media/Default/images/Tulips.jpg

而且我有能力获得“根路径”,它将返回类似于以下内容的内容:

http://example.com/Media/Default/
/another-prefix/Media/Default/

我需要做的是将“路径”字符串的开头与“根路径”字符串的结尾匹配以返回images/Tulips.jpg

我真正需要的是一个通用的正则表达式,它将比较 2strings做一个sort覆盖和修剪以最大可能的匹配。这样,如果输入更改为:

路径:qwerty-some-random-string

根路径:junk-qwerty

结果:-一些随机字符串

4

1 回答 1

2

正确的解决方案(使用 LINQ)

root按长度的降序尝试所有后缀,并在确定其中一个是 的前缀时停止path

var path = "qwerty-qwerty-some-random-string";
var root = "aardvark-junk-qwerty-qwerty";

var prefix = root.Select((ch, i) => root.Substring(i))
                 .Where(pref => path.StartsWith(pref))
                 .DefaultIfEmpty("")
                 .First();
var result = path.Substring(prefix.Length);

看到它在行动


注意:最初我在这里发布了一个正则表达式解决方案,但结果证明它完全不可行。

于 2012-08-05T23:17:02.827 回答