JS字符串方法扩展

原创 2017年04月22日 20:09:04

使用字符串的时候,我们经常会用到占位符替换形式的字符串格式化,我们可以为字符串添加这样一个方法。

/**
 * 为字符串添加格式化方法
 *
 * @returns {String}
 */
String.prototype.format = function(args) {
    var result = this;
    if(arguments.length > 0) {
        if(arguments.length == 1 && typeof(args) == "object") {
            for(var key in args) {
                if(args[key] != undefined) {
                    var reg = new RegExp("({" + key + "})", "g");
                    result = result.replace(reg, args[key]);
                }
            }
        } else {
            for(var i = 0; i < arguments.length; i++) {
                if(arguments[i] != undefined) {
                    var reg = new RegExp("({)" + i + "(})", "g");
                    result = result.replace(reg, arguments[i]);
                }
            }
        }
    }
    return result;
};

在该方法中,我们为其添加了两种格式化方式,一种是使用数组索引占位替换,另一种是使用JSON对象的key占位替换,我们可以写个简单代码测试一下:

var str1 = 'name:{0}',
    str2 = 'name:{name}';
document.write(str1.format('jianggujin'));
document.write('<br/>');
document.write(str2.format({
    name: 'jianggujin'
}));

这两种形式得到的结果是一样的。除了格式化方法之外,我们通常还会用到去空格、判断字符串是否以指定字符串开头或结尾,但是由于浏览器对js的支持不同,我们在使用这些方法的时候可能会出错,所以我们需要对这些方法进行扩展,代码如下:

String.prototype.trim = String.prototype.trim || function(){  
   // 用正则表达式将前后空格  
   // 用空字符串替代 
   return this.replace(/(^\s*)|(\s*$)/g, "");  
};
String.prototype.startsWith = String.prototype.startsWith || function(str){
   if(!str || str.length > this.length){
      return false;
   }
   if(this.substr(0, str.length) == str){
      return true;
   } else {
      return false;
   }
};
String.prototype.endsWith = String.prototype.endsWith || function(str){
   if(!str || str.length > this.length){
      return false;
   }
   if(this.substring(this.length - str.length) == str){
      return true;
   } else {
      return false;
   }
};
版权声明:本文为博主原创文章,转载请标明出处。

常用string原型扩展js

/** 在字符串末尾追加字符串 **/ String.prototype.append = function (str) { return this.concat(str); } /** 删除...
  • liuqiang211
  • liuqiang211
  • 2016年05月22日 21:21
  • 1497

什么情况下用+运算符进行字符串连接比调用StringBuffer/StringBuilder对象的append方法连接字符串性能更好?

tring一旦赋值或实例化后就不可更改,如果赋予新值将会重新开辟内存地址进行存储。 而StringBuffer类使用append和insert等方法改变字符串值时只是在原有对象存储的内存地址...
  • allen1883
  • allen1883
  • 2016年03月08日 15:14
  • 9098

Kotlin(2): 优雅地扩展类的方法和属性

欢迎Follow我的GitHub, 关注我的CSDN. 个人博客: http://www.wangchenlong.org/, 最新内容. Kotlin由JetBrains公司推出, 是兼容Ja...
  • u012515223
  • u012515223
  • 2016年03月08日 09:34
  • 2687

JS字符串方法扩展

/*  *contains方法,判断一个字符串是否包含另一个字符串  */ function contains(target, it){ return target.indexOf(it) !...
  • allbluewt
  • allbluewt
  • 2014年07月11日 14:34
  • 333

JS中常用操作技巧(页面动态增加div,contain方法扩展,JSON对象鱼字符串转换)

javascript的Array没有contains方法,有时候这会不方便,contains方法实现很简单: function contains(a, obj) { var i = a.len...
  • zhousenshan
  • zhousenshan
  • 2015年12月22日 20:17
  • 583

JS判断是否包含某字符串indexOf方法

  • 2015年03月22日 20:46
  • 15KB
  • 下载

Js里面给String添加trim()方法,实现去掉字符串两边空格

  • 2010年08月19日 14:15
  • 817B
  • 下载

js判断为空Null与字符串为空简写方法

最近突然发现自己写的JavaScript代码比较臃肿,所以开始研究JavaScript的简写方法。这样一来,可以让我们的JavaScript代码看起来比较清爽,同时也可以提高我们的技术。那么判断为空怎...
  • ccecwg
  • ccecwg
  • 2014年07月16日 17:07
  • 543

JS 删除字符串最后一个字符的几种方法

字符串:string s = "1,2,3,4,5," 目标:删除最后一个 "," 方法: 1、用的最多的是Substring,这个也是我一直用的 s=s.Substring(0,...
  • G1036583997
  • G1036583997
  • 2014年05月03日 19:03
  • 3657

js操作字符串的常见方法

JavaScript字符串的常用方法
  • qq_35432904
  • qq_35432904
  • 2016年07月19日 10:01
  • 182
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JS字符串方法扩展
举报原因:
原因补充:

(最多只允许输入30个字)