js中把Quill富文本编辑器的首尾空行,空格去掉
function format_rich_text__br(rich_text) {
let reg = /<p><br><\/p>/gim;
let t = [];
let arr = [];
while (t = reg.exec(rich_text)) {
arr.push(t.index)
}
let start = 0;
let end = rich_text.length;
let m = 11;//空行的标签字符长度
for (var n = 0;n < arr.length;n++) {
if (arr[n] == n * m) {
start = (n + 1) * m
}
}
for (var n = arr.length;n > 0;n--) {
if (arr[n - 1] == rich_text.length - ((arr.length - (n - 1)) * m)) {
end = arr[n - 1]
}
}
//若只有空行则直接 return text.slice(start, end)
return rich_text.slice(start, end);
}
若空行中还有其他标签,比如添加了加粗,斜体等字体样式,还需继续处理,在removeBlankSpace函数中继续处理
如果有加粗样式设置的话,标签中会多出span标签和含有‘cursor’字符的属性,所以用span标签和cursor进行判断,
let empty = text.slice(start, end);
let other = empty.split('</p>').filter(item=>item !== '');
let html = '';
let array= [];
other.forEach((item,i)=>{
if(i == 0 || i == other.length-1){
if(item.indexOf('</span>') ==-1 || (item.indexOf('</span>') !==-1 && item.indexOf('cursor') ==-1)){
arr.push(item);
}
}else{
if(item.indexOf('br')==-1) arr.push(item);
}
})
array.forEach(item=>{
html += item + '</p>';
})
return html;
注:不能直接用‘></span>’去判断,因为富文本框中会默认生成一个字符,巨坑!!!!!所以要搭配到字符cursor一起判断
富文本编辑器中还可以添加很多样式,具体情况具体分析~