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

时间:2012-02-28 11:57:53

标签: c# regex user-input

当人们在我的网站上发布一些文字时,他们有时会插入一长串的连字符,星号或者这样的句号

*********************************************************************

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

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

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

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

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

2 个答案:

答案 0 :(得分:6)

回答你的正则表达式问题:

  

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

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

Regex regex = new Regex(@"(.)\1{4,}");

然而,问题的主要观点似乎是:

  

遗憾的是,这会破坏某些结果页面上的布局,这对我来说毫无意义。我该怎么办呢?

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

答案 1 :(得分:2)

如何处理这一点有点取决于你/你的客户...我们只能建议但不回答这个...我会(如果你检查注射)只是打印用户想要的东西,但切断/打破它所以它不能破坏你的布局 - 如果你过滤掉一个角色的倍数(有人放在那里销毁你的布局)他/她会简单地继续写下“ababababababababa”下次和你重新开始