1

"paths"次のような形式のものがいくつかあります。

/Media/Default/images/Tulips.jpg

そして、次のようなものを返す「ルートパス」を取得する機能があります。

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

私がする必要があるのは、「パス」文字列の開始と「ルートパス」文字列の終了を一致させて返すことですimages/Tulips.jpg

私が本当に必要としているのは、オーバーレイの 2 つの処理を比較し、可能な限り最大の一致でトリムする一般的な正規表現stringsですsort。そうすれば、入力が次のように変更された場合に機能します。

パス: qwerty-some-random-string

ルート パス: ジャンク-qwerty

結果: -some-random-string

4

1 に答える 1

2

正解(LINQあり)

root長さの降順でのすべての接尾辞を試し、そのうちの 1 つが の接頭辞であると判断すると停止し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 に答える