删除重复的短语

时间:2012-04-08 00:11:09

标签: c#

我希望从任何给定字符串中删除重复的短语。

示例:

My_First_Post_My_First_Post.htm

两次会出现短语“My_First_Post”,从而成为:

My_First_Post_.htm

这么简单吗?

1 个答案:

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

对于1个字符,只需添加(.??)