我正在寻找从任何给定字符串中删除重复的短语。
例子:
My_First_Post_My_First_Post.htm
那里会有两次“My_First_Post”这个短语,因此变成:
My_First_Post_.htm
有什么简单的方法可以做到这一点?
我正在寻找从任何给定字符串中删除重复的短语。
例子:
My_First_Post_My_First_Post.htm
那里会有两次“My_First_Post”这个短语,因此变成:
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}?)
对于 1 个字符,只需输入(.??)
.