1

我正在寻找从任何给定字符串中删除重复的短语。

例子:

My_First_Post_My_First_Post.htm

那里会有两次“My_First_Post”这个短语,因此变成:

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}?)

对于 1 个字符,只需输入(.??).

于 2012-04-08T00:19:20.703 回答