JS replace方法替换某个字符串成换行,并在html里面换行

`

{answer: "人的一生几乎不可能不经历某种失败。但是,失败的美妙之处在于:如何看待失败完全取决于我们自己。##paragraph##我们可以选择把失败视为“世界末日”。或者,我们可以把失败看作是难得的学习经历,失败通常也确实如此。每当我们在某件事上失败时,我们可以选择去寻找我们理应吸取的教训。这些教训非常重要;它们是我们成长的方式,也是我们避免再犯同样错误的方法。失败只有在我们允许的情况下才能阻止我们。##paragraph##失败也可以教会我们一些关于我们自己的事情,如果没有失败,我们永远也学不到这些。例如:失败可以帮助你发现自己是那么强大的一个人。在某些事情上的失败可以帮助你认出最真诚的朋友,或者帮助你找到意想不到的成功动力。"
groupId: "d4f4dd1f4c734efd86271426677d06e1"
id: "326a0105d52740698b92167559bdf0c3"
rowLocked: 0
stemNum: " "
subjectId: "720e845a223a4f46a3fcf079122df9bf"
}

`

后台返回的json里面 其中answer里面 有 `

paragraph## 标识 当遇到 这个标识的时候,把他替换成空格 然后放到el-table的tableData里面 渲染到表格里面 并且在表格里面换行

`

 this.tableData.map(item=>{
   item.answer = item.answer.replace('##paragraph##','\r')
              })

`
用这种方法去匹配会出现问题

1.只能匹配第一个 ##paragraph## 用//g的话 不起作用
2.不管是替换成/r 是
html里面 都不会换行

阅读 6.6k
5 个回答

\r实现回车换行不妥吧,毕竟系统有差异,改用<br>标签试试:

// 只是遍历用`forEach`更合适些
this.tableData.forEach(item => {
   item.answer = item.answer.replace(/##paragraph##/g, '<br/>');
})

或者考虑把answer转成数组再渲染:

// 只是遍历用`forEach`更合适些
this.tableData.forEach(item => {
   item.answer = item.answer.split(/##paragraph##/);
})

1./g为什么不起作用?我试了可以的啊。
2.换行不是应该\n?

const  text=
      '人的一生几乎不可能不##paragraph##经历某种失败。但是,失败##paragraph##的美妙之处在于'
    const reg = /##paragraph##/gmi
    const rep = text.replace(reg, '\n')

n或者<br/>

pre标签包裹

或者white-space: pre;

的换行(\n)才会被显示

应该是你把 ##paragraph## 转成 <br/> 标签后做 innerHtml 操作才能有换行吧.

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