【问题标题】:How to display spaces in between text in asp.net c# html如何在asp.net c# html中的文本之间显示空格
【发布时间】:2011-07-25 03:36:48
【问题描述】:

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

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

例子:

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

这是一个无关紧要的例子,但我的数据对多个空格有实际用途。

【问题讨论】:

  • 2 个空格:“南非[空格][空格]-[空格][空格]开普敦”
    单个空格:“南非[空格]-[空格]开普敦”
  • 有没有办法在c#后面的代码上自动执行此操作,这样我们就不必替换所有显示的字符串?

标签: c# asp.net html spaces


【解决方案1】:

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

string result = myString.Replace(" ", " ");

这将导致 HTML:

"South Africa  -  Cape Town"

两个空格会正确渲染。

【讨论】:

  • 您好,感谢您的回答,不胜感激。我正在寻找一种可以自动为我进行替换的方法。在所有应用程序中手动替换每一列将是很多工作。
  • 嗯,根据您在此处使用的内容,您可能会在某些事件(例如 DataBound)上遍历控制树,然后搜索并替换该点的空格。
  • 一种方法是将其与 html 代码一起存储,这样您就不必在读取数据时做太多工作。会带来更好的性能,但会限制您仅在 Web 应用程序中使用数据。不知道你能不能接受。
【解决方案2】:

完成了以下操作:

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

    //Only replace subsequent spaces, not all spaces. For example, 
    //"   " (three spaces) becomes "   " (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);
}

【讨论】:

  • 相当不错!一件事:你知道delegate 快捷方式在 C# 3.0 之后的 lambda 语句中有一个新的快捷方式吗?你可以使用MatchEvaluator matchEvaluator = match =&gt; { ... };
猜你喜欢
  • 2012-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多