如何在c#中将空间转换为非中断空间实体

Tom*_*der 2 c#

我想将spaces字符串中的更多内容转换为 c#?

就像字符串一样

       My name  is this.
Run Code Online (Sandbox Code Playgroud)

那么输出应该是

   My name  is this.
Run Code Online (Sandbox Code Playgroud)

tor*_*ros 8

用"非破坏空间"UTF-8实体替换"常规"空间:

string outputString = "Input text".Replace(" ", "\u00A0");
Run Code Online (Sandbox Code Playgroud)

  • 虽然这段代码可能会回答这个问题,但最好包含一些上下文,解释它是如何工作的以及何时使用它。从长远来看,纯代码答案是没有用的。 (3认同)

Adr*_*tti 6

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

string convertedText =
    new Regex("[ ]{2,}").Replace(textToConvert, " ");
Run Code Online (Sandbox Code Playgroud)

例:

My Name   is this
  ^    ^^^  ^

它将被改为:

My Name  is this
Run Code Online (Sandbox Code Playgroud)

更新
如果您需要保留额外的空格(并且只用多个空格替换),您可以使用此正则表达式:

string convertedText =
    new Regex(" (?= )|(?<= ) ").Replace(textToConvert, "&nbsp;");
Run Code Online (Sandbox Code Playgroud)

例:

My Name   is this
  ^    ^^^  ^

它将被改为:

My Name&nbsp;&nbsp;&nbsp;is this
Run Code Online (Sandbox Code Playgroud)

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


Hat*_*oft 1

更正下面的行将不起作用

请使用 Server.HtmlEncode

你必须通过代码来完成

string s = " ";
if(s == " ")
{
 s = "&nbsp;"
}

Or use "My name  is this".Replace(" ", "&nbsp;");
Run Code Online (Sandbox Code Playgroud)