删除许多相同字符的实例(C#)

Jes*_*per 1 c# regex user-input

当人们在我的网站上发布一些文字时,他们有时会插入一长串连字符,星号或完整的句号,如下所示

*********************************************************************
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会破坏某些结果页面上的布局,这对我来说毫无意义.

我该怎么处理?也许一个正则表达式会将同一个字符的X重复次数减少到只有5.如果是这样,那么如何......

Regex regex = new Regex("[\\*\\._-]{5,}");
string goodstring = regex.Replace(badstring, "-----");
Run Code Online (Sandbox Code Playgroud)

但是如果用户认为编写aaaaaaaaaaaaaaaaaaaaaaaaaa很有趣,那么我的正则表达式会失败.

问题是.你怎么认为我应该处理这个问题,如果你认为我应该用正则表达式处理它,那么我如何编写一个正则表达式来删除任何字符的不必要的重复(而不仅仅是*.- _像我自己的正则表达式这里) ?

Mar*_*ers 6

要回答您的正则表达式问题:

如何编写一个可以删除任何字符的不必要重复的正则表达式

您可以使用反向引用来检测多次输入的相同字符,例如:

Regex regex = new Regex(@"(.)\1{4,}");
Run Code Online (Sandbox Code Playgroud)

但是你的问题的主要观点似乎是:

不幸的是,这会破坏某些结果页面上的布局,这对我来说毫无意义.我该怎么处理?

您应该使用样式表来指定当文本不适合其容器时应该发生的情况.例如,您可以使用overflow属性将内容设置为隐藏或滚动溢出,而不是具有默认行为,即溢出内容可以与页面上的其他元素重叠.