C# 如何通过正则表达式删除字符串中的额外返回和空格?
我将HTML代码转换为纯文本。但是有许多额外的返回和空格。如何删除它们?您可以使用Trim()删除空格和返回。在HTML中,空格并不重要,因此您可以使用System.String类中的Trim()方法忽略它们。将删除所有空格C# 如何通过正则表达式删除字符串中的额外返回和空格?,c#,regex,return,space,C#,Regex,Return,Space,我将HTML代码转换为纯文本。但是有许多额外的返回和空格。如何删除它们?您可以使用Trim()删除空格和返回。在HTML中,空格并不重要,因此您可以使用System.String类中的Trim()方法忽略它们。将删除所有空格 string new\u string=Regex.Replace(orig\u string,@“\s+”,“”)将把多个空格折叠成一个 找到两个或多个连续的空格并将其替换为单个空格,然后 找到两个或多个连续的换行符,并用一个换行符替换它们 如果这是正确的,那么你可以
string new\u string=Regex.Replace(orig\u string,@“\s+”,“”)
将把多个空格折叠成一个
- 找到两个或多个连续的空格并将其替换为单个空格,然后
- 找到两个或多个连续的换行符,并用一个换行符替换它们
resultString = Regex.Replace(subjectString, @"( |\r?\n)\1+", "$1");
这将保持空白的原始“类型”不变,并正确地保留Windows行结尾。如果您还想将多个选项卡“压缩”为一个选项卡,请使用
resultString = Regex.Replace(subjectString, @"( |\t|\r?\n)\1+", "$1");
要将一系列换行符和空格(每个换行符和空格的数目任意)压缩为一个换行符,请使用
resultString = Regex.Replace(subjectString, @"(?:(?:\r?\n)+ +){2,}", @"\n");
我用了很多算法。每个循环都很好,但这是明确和绝对的
//define what you want to remove as char
char tb = (char)9; //Tab char ascii code
spc = (char)32; //space char ascii code
nwln = (char)10; //New line char ascii char
yourstring.Replace(tb,"");
yourstring.Replace(spc,"");
yourstring.Replace(nwln,"");
//by defining chars, result was better.
我认为trim可以删除起始空格和结束空格事实上,只支持前导字符和尾随字符:+1但是,为了提出一个替代方案,也许可以尝试在OP中扩展这个想法,并给出一个无正则表达式的解决方案?您可以删除空格和其他可能要删除的字符。如果您想删除返回,我认为最好的方法是使用“您的Html”。Trim('\n')关键是,它只从字符串的开头和结尾删除返回。OP试图在整个字符串中折叠空格<代码>修剪可能有用,但它不能完成全部工作。谢谢,退货怎么办?我真的很喜欢你删除空格的方式;-)
\s
是空格、换行符、制表符和表单提要(以及某些实现中的一些其他空格)的简写,因此它将删除这些返回并将其转换为单个空格。+1用于维护新行并仅折叠相同类型的重复项Good,但是还有一个问题无法解决。例如\n\n\n\n\n\n\n\n\n\n
返回与空格混合的结果,在这种情况下,您希望结果是什么?如果您有类似于\n\n\n\n\n\n
或\n\n\n\n
或\n\n\n\n\n\n
等的内容,该怎么办?@Tim Pietzcker我希望序列空格“sequent返回到”\n”,然后用类似于\n\n\n\n\n\n\n\n
的空格返回到“\n”。ps:我想我可以通过替换字符串两次来完成。首先,想得到答案。接下来,替换<代码> \\\\\\\\\\\\\\\\\\\\N\N/COD>。听起来很明显,但是如果替换空格和CRLFs没有美化你的HTML,你可以考虑使用一个