【问题标题】:How to remove extra returns and spaces in a string by regex?如何通过正则表达式删除字符串中的额外返回和空格?
【发布时间】:2011-02-11 20:07:53
【问题描述】:

我将HTML代码转换为纯文本。但是有很多额外的返回和空格。如何删除它们?

【问题讨论】:

  • 这听起来很明显,但是如果替换空格和 CRLF 不足以美化您的 HTML,您可以考虑使用HTML formatter

标签: c# regex return space


【解决方案1】:

string new_string = Regex.Replace(orig_string, @"\s", "") 将删除所有空格

string new_string = Regex.Replace(orig_string, @"\s+", " ") 只会将多个空格合并为一个

【讨论】:

  • 谢谢,退货呢?
  • 我真的很喜欢你删除空格的方式 ;-)
  • \s 是空格、换行符、制表符和换页符(以及某些实现中的一些其他空格)的简写,因此它将删除这些返回并将它们转换为单个空格。
【解决方案2】:

我假设你想要

  • 找到两个或多个连续的空格并将它们替换为一个空格,然后
  • 找到两个或多个连续的换行符并将它们替换为一个换行符。

如果是正确的,那么你可以使用

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");

【讨论】:

  • +1 用于维护新行并仅折叠相同类型的重复项
  • 好,但是有更多的适合无法解决。比如\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 \n \n\n 之类的东西怎么办?
  • @Tim Pietzcker 我想要连续的空格到“”,然后返回到“\n”,然后用\n\n \n\n \n\n \n 到“\n”之类的空格返回。ps:之间有多个空格"\n"s
  • 我想我可以通过两次替换字符串来做到这一点。首先就像答案一样。接下来,替换\n \n \n \n \n \n \n \n \n \n
【解决方案3】:

我为此使用了很多算法。每个循环都很好,但这是清晰而绝对的。

//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.

【讨论】:

    【解决方案4】:

    您可以使用 Trim() 删除空格并返回。在 HTML 中,空格并不重要,因此您可以使用 System.String 类中的 Trim() 方法省略它们。

    【讨论】:

    • 我认为 trim 可以去掉起始空间和结束空间
    • 其实只支持前导和尾随字符:msdn.microsoft.com/en-us/library/system.string.trim.aspx。 +1 建议替代方案,也许可以尝试为 OP 扩展这方面的想法并提供无正则表达式的解决方案?
    • 您可以删除空格以及您可能想要删除的其他字符。如果你想删除退货,我认为最好的方法是使用这个:“Your Html”.Trim('\n')
    • 重点是,它只将它们从字符串的 beginningend 中删除。 OP 正在尝试折叠整个字符串中的空格。 Trim 可能有用,但不能完成全部工作。
    猜你喜欢
    • 2018-11-20
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    相关资源
    最近更新 更多