如何在asp.net中显示文本之间的空格c#html
我有一个奇怪的问题,我直接从数据库获取数据到数据源。数据绑定在带有链接按钮的转发器中。如何在asp.net中显示文本之间的空格c#html
我遇到的问题是数据库中的数据可能在字符串中间有多个空格,但是当显示在前端时只显示空格。想到这是标准的HTML行为来删除空格,我会假设asp.net将处理这与网页的呈现。同样发生的是,当报告导出为excel时,它只有1个空间而不是2个空间。
例子:
2位: “南非 - 开普敦”
单个空格: “南非 - 开普敦”
这是一个不相关的例子,但我的数据有现实用于多个空间。
您可以用
替代的空间,就像这样:
string result = myString.Replace(" ", " ");
这将导致HTML:
"South Africa - Cape Town"
这将有两个空格正确呈现。
简单而高效。 +1 – Hallaghan 2011-03-29 09:57:30
嗨,谢谢你的回答,非常感谢。我正在寻找一种可以自动替代我的方法。在所有应用程序中手动更换每个列将是很多工作。 – 2011-03-29 10:08:01
好吧,根据你在这里工作的情况,你可能会在某些事件(如DataBound)上遍历控件树,然后搜索并替换当前的空间。 – 2011-03-29 10:15:10
最终做了以下内容:
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(" ");
}
return spaceStringBuilder.ToString();
};
return spaceRegex.Replace(server.HtmlEncode(value), matchEvaluator);
}
相当不错!有一件事:你知道自从C#3.0开始,'delegate'快捷方式在lambda表达式中有一个新的快捷方式吗?你可以使用MatchEvaluator matchEvaluator = match => {...};' – 2011-03-30 08:08:41
2位: “南非[空格] [空格] - [空格] [空格]开普敦”
单个空格:“南非[空格] - [空间]开普敦“ – 2011-03-29 09:56:34
有没有办法做到这一点在c#中的代码自动执行此操作,以便我们不必更换所有显示的字符串? – 2011-03-29 10:02:27