如何在字符串中删除重复的字符,我有一个网站,允许用户在照片上发表评论。!!!!!!!!!!!!'或者'你SUCCCCCCCCCCCCCCCKKKKKKKKKKKKKKKKK'你明白了。基本上,我想通过删除至少大部分重复的冗余字符来缩短这些评论。我确定有一种方法可以使用Regex执行此操作。我只是想不通。有任何想法吗?请记住,英语经常使用双字母,您可能不想盲目地消除它们。这是一个正则表达式,它会去掉除双打以外的任何东西。Regexr=newRegex("(.)(?你是特别想缩短代码中的字符串,还是只是通过验证并再次向用户显示验证错误?类似“重复字符太多”之类的东西。如果在后者之后是可以接受的,@"(w)1{2}"应该匹配3个或更多字符(解释为“重复”两次或更多次)。编辑:正如@Piskvor指出的那样,这将恰好匹配3个字符。它适用于匹配,但不用于替换。他的版本@"(w)1{2,}"替换得更好。但是,我想指出,我不认为这里有替换最佳实践。最好只拥有表单验证失败而不是试图擦除正在提交的文本,因为可能存在边缘情况,您可以将其他可读(即使不合理)的文本转换为无意义的文本。正则表达式有点矫枉过正。试试这个:publicstaticstringRemoveRepeatedChars(Stringinput,intmaxRepeat){if(input.Length==0)returninput;StringBuilderb=newStringBuilder;Char[]chars=input.ToCharArray();charlastChar=chars[0];int重复=0;for(inti=1;ivarnonRepeatedChars=myString.ToCharArray().Distinct().Where(c=>!char.IsWhiteSpace(c)||!myString.Contains(c)).ToString();Distinct()将删除所有重复项,但显然不会看到"A"和"a"相同。Console.WriteLine(newstring("Asdfasdf".Distinct().ToArray()));output"Asdfa"vartest="OMMMMMGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGMMM";test.Distinct().Select(c=>c.ToString()).ToList().ForEach(c=>{while(test.Contains(c+c))test=test.Replace(c+c,c);});编辑:糟糕的建议,请不要阅读,我真的值得我的-1吗?我在technuggets中发现了类似于你正在寻找的东西。没什么可做的除了很长的正则表达式,因为我从来没有听说过重复正则表达式...这是一个完整的例子,我不会把它贴在这里,但我认为它会准确地回答你的问题。以上就是C#学习教程:如何删除字符串中的重复字符。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注---本文收集自网络,不代表立场,如涉及侵权,请指正点击右侧联系管理员删除。如需转载请注明出处:
