平常在做项目的时候,会经常遇到多行字符串拼接的需求,例如,我需要处理一个 li
标签动态拼接显示到 ul
中,等等,像这样的需求场景还是非常多的,这就需要根据在项目中实际遇到的需求来处理,选择合适的拼接方式会大大提高开发效率并减少出错的可能,在这里我总结了 7 招字符串拼接方法。
需求场景
在项目中,动态处理分页,根据系统设定的显示条目确定有多少分页,这时,需要将分页的内容经过处理动态生成再放回到原来的 ul
中,这时就需要进行多行字符串的拼接。
1 2 3
| <li><a href="#">上页</a></li> <li><a href="#"> 1 </a></li> <li><a href="#">下页</a></li>
|
对于这样的 DOM 结构需要在 JavaScript 中拼接,你会怎样处理?
常规方法
1
| var s=`<li><a href="">上页</a></li><li><a href="">1</a></li><li><a href="">下页</a></li>`;
|
字符串相加
1 2 3
| var str = `<li><a href="#">上页</a></li>` + `<li><a href="#"> 1 </a></li>` + `<li><a href="#">下页</a></li>`;
|
反斜杠
1 2 3
| var str = `<li><a href="#">上页</a></li>\ <li><a href="#"> 1 </a></li>\ <li><a href="#">下页</a></li>`;
|
数组切割
1 2 3 4 5
| var str = [ `<li><a href="#">上页</a></li>`, `<li><a href="#"> 1 </a></li>`, `<li><a href="#">下页</a></li>` ].join('\n');
|
ES6 语法
1 2 3
| var str = `<li><a href="#">上页</a></li> <li><a href="#"> 1 </a></li> <li><a href="#">下页</a></li>`
|
正则表达式
1 2 3
| 查找:\n 替换:\\\n 通过正则表达式把原有的换行 \n 替换成了 \\\n 带有反斜杠的换行,本质是和反斜杠方法一样
|
黑魔法
1 2 3 4 5 6 7 8 9 10
| function aHereDoc() {
}
function hereDoc(func) { return func.toString().split(/\n/).slice(1, -1).join('\n'); } console.log(hereDoc(aHereDoc));
|
利用 func.toString()
获取需要批量处理的字符串,利用 split(/\n/).slice(1, -1)
去掉首尾两行函数定义的代码,控制台输出: