TMC*_*TMC 3 sql sql-server asp.net
我有一个从SQL返回的文本可能有新行.但是,由于我将值放在<p></p>标签之间,因此忽略了换行符.
例如,如果SQL中的文本实际上是这样(行之间有CRLF):
foobar car
carbar foo
Run Code Online (Sandbox Code Playgroud)
HTML代码变为:
<p>foobar car
carbar foo</p>
Run Code Online (Sandbox Code Playgroud)
这只是呈现为:
foobar car carbar foo
Run Code Online (Sandbox Code Playgroud)
最终似乎我想要检测换行符然后添加适当的HTML,例如:
<p>foobar car</p><p>carbar foo</p>
Run Code Online (Sandbox Code Playgroud)
甚至
<p>foobar car<br/><br/>carbar foo</p>
Run Code Online (Sandbox Code Playgroud)
这应该在前端处理还是在返回数据的SQL查询中处理?它似乎应该在前端代码(在我的ASP.NET视图中)处理,但如果是这样,如何?
我注意到PHP中有一个函数来处理这种情况:nl2br(http://www.php.net/manual/en/function.nl2br.php)但不幸的是,这对我没有帮助:)
执行这种逻辑通常比您的演示代码更好,然后是您的数据库或中间层.
我推荐的方法是编写一些.net代码,用<br/>标签替换cr和lf .代码本身很简单,这是一个模拟你的php nl2br函数的例子:
string nl2br(string text)
{
return text.Replace("\r", "<br/>").Replace("\n", "<br/>");
}
Run Code Online (Sandbox Code Playgroud)
您也可以使用REPLACE()和CHAR()在SQL中执行此转换,尽管最好在表示层而不是数据库层中执行此类转换.
SQL方法将是:
SELECT REPLACE(REPLACE(myStr, char(13), '<br/>'), CHAR(10), '<br/>')
Run Code Online (Sandbox Code Playgroud)
这将用标签替换CHAR(13)和CHAR(10)(cr和lf)<br/>.
第三种选择是使用标签在预先格式化的文本中呈现文本,<pre>尽管这实际上仅适用于一组狭窄的用例(例如显示StackOverflow上使用的代码)
例如
<pre>
foobar car
carbar foo
</pre>
Run Code Online (Sandbox Code Playgroud)
会像这样渲染:
foobar car carbar foo
保持空间和新线完好无损.
| 归档时间: |
|
| 查看次数: |
19503 次 |
| 最近记录: |