如何在asp.net c#html中显示文本之间的空格

如何在asp.net c#html中显示文本之间的空格,c#,asp.net,html,spaces,C#,Asp.net,Html,Spaces,我有一个奇怪的问题,我直接从数据库获取数据到数据源。数据绑定在带有链接按钮的中继器中

我有一个奇怪的问题,我直接从数据库获取数据到数据源。数据绑定在带有链接按钮的中继器中

<我的问题是数据库中的数据在字符串的中间可能有多个空间,但是当在前端显示时,只显示空间。在考虑过这是删除空格的标准HTML行为之后,我认为asp.net会通过呈现网页来处理这一问题。此外,当报表导出到excel时,它只有1个空间,而不是2个空间

例如:

2个空间:“南非-开普敦”
单一空间:“南非-开普敦”


这是一个不相关的示例,但我的数据实际用于多个空格。

您可以用
替换空格,如下所示:

string result = myString.Replace(" ", "&nbsp;");
这将导致HTML:

"South&nbsp;Africa&nbsp;&nbsp;-&nbsp;&nbsp;Cape&nbsp;Town"

这将使用两个空格正确渲染。

最后执行以下操作:

    Regex spaceRegex = new Regex("\\s{2,}");

    //Only replace subsequent spaces, not all spaces. For example, 
    //"   " (three spaces) becomes " &nbsp;&nbsp;" (1 space, 2 non-breaking spaces).
    MatchEvaluator matchEvaluator = delegate(Match match)
    {
        StringBuilder spaceStringBuilder = new StringBuilder(" ");
        for (int i = 0; i < match.Value.Length - 1; i++)
        {
            spaceStringBuilder.Append("&nbsp;");
        }
        return spaceStringBuilder.ToString();
    };

    return spaceRegex.Replace(server.HtmlEncode(value), matchEvaluator);
}
Regex-spaceRegex=newregex(“\\s{2,}”);
//仅替换后续空间,而不是所有空间。例如
//“”(三个空格)变为“”(1个空格,2个不间断空格)。
MatchEvaluator MatchEvaluator=代理(匹配)
{
StringBuilder spaceStringBuilder=新的StringBuilder(“”);
for(int i=0;i
2个空格:“南非[space][space]-[space][space]开普敦”
单个空格:“南非[space]-[space]开普敦”有没有办法在c#中的代码后面自动执行此操作,这样我们就不必替换所有显示的字符串?您好,谢谢您的回答,非常感谢。我正在寻找一种方法,将自动为我做的替代。手动替换所有应用程序中的每一列将是一项艰巨的工作。好吧,根据您在这里使用的内容,您可能会在某些事件上迭代控制树,例如DataBound,一种方法是用html代码存储它,这样你就不必在读取数据时做太多的工作。将产生更好的性能,但限制您仅在web应用程序中使用数据。我不知道你是否能接受。很好!有一件事:您知道自C#3.0以来,
delegate
shortcut在lambda语句中有一个新的快捷方式吗?您可以使用
MatchEvaluator MatchEvaluator=match=>{…}