匹配字符串的开头

时间:2012-08-05 22:14:50

标签: .net regex

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

/Media/Default/images/Tulips.jpg

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

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

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

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

,它将起作用
  

路径:qwerty-some-random-string

     

Root Path:junk-qwerty

     

结果:-some-random-string

1 个答案:

答案 0 :(得分: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);

<强> See it in action


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