本文介绍了前端接收后端含回车符文本时的四种换行展示方法。包括使用正则替换为br标签、利用pre标签自动解析、通过CSS white-space属性控制空白符,以及在Vue中通过计算属性或数组转换实现。每种方法各有优劣,适用于不同场景。
前言:
当后端返回包含换行符的长文本时,前端直接展示往往会导致所有文字连成一片,无法正确换行。本文探讨以content变量代表后端返回的原始文本内容,解决这一显示问题。
方法一:
HTML中的“↵”符号通常被识别为\r、\n等转义字符。我们可以通过正则表达式将换行符替换为HTML的<br />标签,例如使用.replace(/(\r\n|\n|\r)/gm, '<br />')。需要注意的是,如果文本中包含英文尖括号“<>”,此方法可能导致其无法正确显示。
<div v-html="content.replace(/(\r\n|\n|\r)/gm, '<br />')"></div>
方法二:
使用
<pre>标签包裹文本。该标签能够自动识别并处理后台返回的换行符号,保持原有的格式进行展示。
<pre>{{content }}</pre>
方法三:
利用CSS的white-space属性。
<div class="logDetail">{{ content }}</div>
.logDetail {
white-space: pre-wrap;
/* white-space:pre-line; */
}
white-space CSS属性用于定义元素内部空白符的处理方式。
- pre-wrap:连续的空白符会被保留。当遇到换行符、<br>元素,或者为了填充“行框盒子(line boxes)”时才会发生换行。
- pre-line:连续的空白符会被合并。当遇到换行符、<br>元素,或者为了填充“行框盒子(line boxes)”时会发生换行。
方法四:
以下示例基于Vue框架实现,其他框架的思想类似。
<template>
<div v-html="contentFormat"></div>
</template>
<script>
export default {
data(){
return{
//存储后端返回的,文本
content:"",
}
},
//计算属性,与data同级
computed: {
contentFormat() {
//this.content存储后端传回来的文本数据,就是要对这个数据进行处理
let arr = this.content.split("");
return arr
.map((item) => {
return item === "\n" ? "<br>" : item;
})
.join("");
},
},
methods:{
getData(){
....
this.content=xxx;
}
}
}
</script>
思路是将文本字符串转换为数组,然后将数组中的“\n”替换为浏览器正常解析的换行标签。由于后端传回的“↵”实际对应\r\n,此处同样可以使用正则表达式将字符串的换行符转换为<br>,从而避免转换为数组的步骤。
总结
到此这篇关于前端处理文本换行展示4种处理方法的文章就介绍到这了,更多相关前端处理文本换行内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!