1

特定の文字列から重複したフレーズを削除しようとしています。

例:

My_First_Post_My_First_Post.htm

「My_First_Post」というフレーズが 2 回含まれているため、次のようになります。

My_First_Post_.htm

これを行う簡単な方法はありますか?

4

1 に答える 1

10

正規表現を試すことができます - ただし、効率には注意してください:

Regex re = new Regex(@"(?<m>(.+))(.*?)\k<m>", RegexOptions.Compiled);
string str = "My_First_Post_My_First_Post.htm";

re.Replace(str, "$1$2"); // My_First_Post_.htm

最初の最長の繰り返しシーケンスを削除します。少なくとも 10 文字にするには、最初のグループを次のように変更します。

(?<m>(.{10,}))

文字間の距離を 2 に制限するには、たとえば、2 番目のグループを次のように変更します。

(.{,2}?)

1文字の場合はそのまま入れて(.??)ください。

于 2012-04-08T00:19:20.703 に答える