我希望从任何给定字符串中删除重复的短语。
示例:
My_First_Post_My_First_Post.htm
两次会出现短语“My_First_Post”,从而成为:
My_First_Post_.htm
这么简单吗?
答案 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个字符,只需添加(.??)
。