[关闭]
@lesonky 2017-01-06T08:32:11.000000Z 字数 1769 阅读 903

JavaScript字符串拼装

JavaScript

为了解决拼接字符串的时候混乱的加号,根据printf函数设计了这个buildString函数

  1. //普通版本(建议使用下面的闭包版本)
  2. function buildString(str,paraList){
  3. //占位符前后修饰符
  4. var prefix=" \\{ \\{", surfix="\\} \\} ";
  5. //正则表达式字符串
  6. var regStr = prefix + "(.+?)" + surfix;
  7. //新建正则表达式
  8. var regExp = new RegExp(regStr,"mg");
  9. if (!str){
  10. //没有参数时返回空字符串
  11. return "";
  12. }
  13. else if (str && arguments.length == 1){
  14. //只有一个参数时返回本身
  15. return str;
  16. }
  17. else if (arguments.length >= 2 && ((typeof paraList) == "string")){
  18. //字符串传参数时转换参数变成数组
  19. paraList = Array.prototype.splice.call(arguments,1);
  20. return bulidStr(str,paraList);
  21. }else{
  22. //数组或对象传参数
  23. return bulidStr(str,paraList);
  24. }
  25. //功能函数,替换并返回
  26. function bulidStr(str,paraList){
  27. var ret = str.replace(regExp,function(full,key){
  28. return paraList[key];
  29. });
  30. return ret;
  31. }
  32. }
  1. //闭包版本
  2. var buildString = function(){
  3. //占位符前后修饰符
  4. var prefix="\\{\\{", surfix="\\}\\}";
  5. //正则表达式字符串
  6. var regStr = prefix + "(.+?)" + surfix;
  7. //新建正则表达式
  8. var regExp = new RegExp(regStr,"mg");
  9. //功能函数,替换并返回
  10. function bulidStr(str,paraList){
  11. var ret = str.replace(regExp,function(full,key){
  12. return paraList[key] || "";
  13. });
  14. return ret;
  15. }
  16. return function(str,paraList){
  17. if (!str){
  18. //没有参数时返回空字符串
  19. return "";
  20. }
  21. else if (str && arguments.length == 1){
  22. //只有一个参数时返回本身
  23. return str;
  24. }
  25. else if (arguments.length >= 2 && ((typeof paraList) == "string")){
  26. //字符串传参数时转换参数变成数组
  27. paraList = Array.prototype.splice.call(arguments,1);
  28. return bulidStr(str,paraList);
  29. }else{
  30. //数组或对象传参数
  31. return bulidStr(str,paraList);
  32. }
  33. }
  34. }();

使用:

  1. //使用对象传参,占位符使用属性名
  2. var id="myID",myclass="myclass";
  3. buildString("<div id='{{id}}' class='{{myclass}}' ></div>",{id:id,myclass:myclass});
  4. //输出: "<div id='myID' class='myclass' ></div>"
  5. //使用数组传参,占位符使用数组下标
  6. var id="myID",myclass="myclass";
  7. buildString("<div id='{{0}}' class='{{1}}' ></div>",[id,myclass]);
  8. //输出: "<div id='myID' class='myclass' ></div>"
  9. //使用字符串传参,占位符使用下标,字符串一次传入,位置从0开始
  10. var id="myID",myclass="myclass";
  11. buildString("<div id='{{0}}' class='{{1}}' ></div>",id,myclass);
  12. //输出: "<div id='myID' class='myclass' ></div>"
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注