特定の文字列から重複したフレーズを削除しようとしています。
例:
My_First_Post_My_First_Post.htm
「My_First_Post」というフレーズが 2 回含まれているため、次のようになります。
My_First_Post_.htm
これを行う簡単な方法はありますか?
特定の文字列から重複したフレーズを削除しようとしています。
例:
My_First_Post_My_First_Post.htm
「My_First_Post」というフレーズが 2 回含まれているため、次のようになります。
My_First_Post_.htm
これを行う簡単な方法はありますか?
正規表現を試すことができます - ただし、効率には注意してください:
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文字の場合はそのまま入れて(.??)
ください。