日期:2014-05-19  浏览次数:20492 次

如何替换字符串中空格为&nbsp;,\n为<br>注:html元素中的不替换

<div   id= "ttt ">         xxx   </div>
<div   id= "ccc ">     ab         </div>

用正则换成

<div   id= "ttt ">   &nbsp;   &nbsp;   &nbsp;xxx </div> <br>
<div   id= "ccc ">   &nbsp;   &nbsp;ab   &nbsp;   &nbsp; </div>


最好是基于.net的实现,js也行
万分感谢!

------解决方案--------------------
基本是如下实现,具体标记可能写的有问题就是单词写错啦哈哈,手写的不确定。
document.getElmentByid( "id ").innerHtml.replace( " ", "&nbsp; ")
------解决方案--------------------
先匹配整个 Html 的 Tag 和里面的内容,分在不同的捕获组里。
然后将内容中的空格替换为 &nbsp;
最后重新组合字符串。

string ResultString = null;
try {
Regex RegexObj = new Regex( " <(? <tag> [A-Z][A-Z0-9]*)[^> ]*> (? <content> .*?) </\\k <tag> > ",
RegexOptions.Singleline | RegexOptions.IgnoreCase);
ResultString = RegexObj.Match(html).Groups[ "content "].Value;
ResultString = ResultString.Replace( " ", "&nbsp; ");
string dest = string.Format( " <{0}> {1} <\{0}> ", RegexObj.Match(html).Groups[ "tag "].Value, ResultString);
// 重新合并字符串
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
------解决方案--------------------
string str = @ " <div id= " "ttt " "> xxx </div> <div id= " "ccc " "> ab </div> "; System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex( "( <[^> ]*?> )([^> ]*?)( </[^> ]*?> ) "); str = reg.Replace(str, new System.Text.RegularExpressions.MatchEvaluator(this._Replace)); Response.Write(str); string _Replace(System.Text.RegularExpressions.Match m) { return m.Result( "$1 ") + m.Result( "$2 ").Replace( " ", "&nbsp; ") + m.Result( "$3 "); }