正则将空格替换为 之后html上直接用文本展示了,并没有转化为空格

正则将空格替换为 之后html上直接将这个 展示为文本了,并没有替换成空格,这个该怎么改呢?
我的代码是:

this.preTestSpeedData = this.preTestSpeedData.replace(/\s+/g,' ');

clipboard.png

阅读 8.9k
4 个回答
  <div id='div'></div>

  <script>
    var text = ' This is  a   dummy   text!    ';
    document.getElementById('div').innerText = text.replace(/ /g, '\u00a0');
  </script>

'&nbsp;' 只有设置为 innerHTML 有效,用 '\u00a0' 设置 textContent, innerHTML, innerText都有效。

如果是这种场景,为了防xss,建议使用实体和非实体的转化:

function htmlEncode(html) {
    var sub = document.createElement('div');
    sub.textContent != null ? sub.textContent = html : sub.innerText = html;
    var output = sub.innerHTML;
    sub = null;
    return output;
}

function htmlDecode(text) {
    var sub = document.createElement('div');
    sub.innerHTML = text;
    var output = sub.textContent || sub.innerText;
    sub = null;
    return output;
}

你可以尝试一下v-html,应该可以解决你现在的困境。

<div v-html="preTestSpeedData"></div>
this.preTestSpeedData = this.preTestSpeedData.replace(/\s+/g,' &nbsp; ');

试试这样写法,遇到同样的问题,用前后加空格 解析显示问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏