【问题标题】:How to convert a space into non breaking space entity in c#如何在c#中将空间转换为非破坏空间实体
【发布时间】:2012-07-15 07:05:40
【问题描述】:

我想通过 c# 将字符串中的更多 spaces 转换为  

如果字符串是

       My name  is this.

那么输出应该是

   My name  is this.

【问题讨论】:

    标签: c#


    【解决方案1】:

    将“常规”空格替换为“不间断空格”UTF-8 实体:

    string outputString = "Input text".Replace(" ", "\u00A0");
    

    【讨论】:

    • 虽然这段代码可以回答这个问题,但最好包含一些上下文,解释它是如何工作的以及何时使用它。从长远来看,纯代码的答案没有用处。
    【解决方案2】:

    如果您需要将多个空格转换为单个不间断空格,请尝试使用 RegEx:

    string convertedText =
        new Regex("[ ]{2,}").Replace(textToConvert, " ");
    

    例子:

    我的名字是这个 ^ ^^^ ^

    将改为:

    My Name  is this
    

    更新
    如果您需要保留额外的空格(并且只用 nbsp 替换多个空格),您可以使用this regex:

    string convertedText =
        new Regex(" (?= )|(?<= ) ").Replace(textToConvert, "&nbsp;");
    

    例子:

    我的名字是这个 ^ ^^^ ^

    将改为:

    My Name&nbsp;&nbsp;&nbsp;is this
    

    对于第二种情况,作为替代方案,您甚至可能根本不使用正则表达式(只是循环),但如果您必须经常使用相同的正则表达式,它们应该会更快。

    【讨论】:

      【解决方案3】:

      更正下一行无效

      请使用 Server.HtmlEncode

      你必须通过代码来完成

      string s = " ";
      if(s == " ")
      {
       s = "&nbsp;"
      }
      
      Or use "My name  is this".Replace(" ", "&nbsp;");
      

      【讨论】:

      • 它将对文本进行编码,但不会转换为不间断空格。
      • @TomRider 它将用 nbsp 替换 每个 空格,而不仅仅是第一个空格之后的空格,无论如何在你的情况下它可能没问题!
      • 请我解释一下-1
      • 这个答案格式很差,解释也很差,好像是三个答案合二为一。
      【解决方案4】:

      试试这个

      string myString = "My name  is this".Replace("  ", " &nbsp;");
      

      【讨论】:

      • 如果 OP 有 3、4、5... 个空格怎么办?
      • @oleksii 这会将每对空格替换为空格,后跟&amp;nbsp;。你最终得到:“   ”、“    ”和“     ”
      猜你喜欢
      • 2011-07-03
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 2020-10-23
      相关资源
      最近更新 更多