JavaScript字符串方法

  • str.length返回字符串长度
  • str.charAt();返回某个位置的字符
  • str.indexOf();某个字符第一次出现的索引
  • str.slice();开始到结束(不包含)索引,没有第二个参数表示从开始到最后
  • str.substr();开始,长度
  • str.substring();开始,结束
  • str.split();按拆分内容形成数组,在里面也可以用正则
三个字符串方法比较
 param1param2param1为负数param2为负数param2不存在
slicestart

end

(不包含)

+length+lengthstart到最后
substrstartlength+length0start到最后
substringstart

end

(不包含)

首先比较param1和param2的大小然后小在前,大在后 

00start到最后
    var str="abcdefg";
    console.log(str.charAt(1));//参数是数字
    console.log(str.indexOf("a"));
    console.log(str.slice(0,1));
    console.log(str.slice(0,-3));
    console.log(str.slice(0));
    console.log(str.substr(0,5));
    console.log(str.substr(0,-5));
    console.log(str.substr(1));
    console.log(str.substring(1,0));
    console.log(str.substring(1,-1));

运行结果:

有关于字符串方法使用正则:

  • match方法:
  1. stingObj.match(value):该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。
  2. stringObject.match(regexp):返回存放匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志 g。
        let str="hello world";
        console.log(str.match(/o/))

无 g:和reg.exec(str)返回一样: (上为exec 下为match):返回一个数组,第一项是首次匹配的字符串内容(注意无g的情况下,第一次匹配成功了就不往下做匹配了),第二项是index...,所以我们用的时候就一般用匹配结果的第一项。

有g:普通数组:

同时,需要明确match方法使用分组和不适用分组的时候也有区别:

详解正则表达式匹配方法 match()

  • split()方法:注意split中的正则有和match中相反的一个意思,比如说按空格分成数组:
//split
str.split(/\s/g);
//match
str.match(/[\S]+/g);

此处正好总结一下正则里面:() {} []的区别:
正则表达式(括号)、[中括号]、{大括号}的区别小结

():分组,str.replace中会用的比较多

[]:定义匹配的字符范围

{}:表示匹配的长度

stringobject.replace(regexp/substr,replacement)

其中regexp/substr必需。规定字符串或要替换的模式的regexp对象。(请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 regexp 对象。) replacement必需。一个字符串值。规定了替换文本或生成替换文本的函数。最后返回一个新的字符串,是用replacement替换了regexp的第一次匹配或所有匹配之后得到的。

ECMAScript规定,replace()方法的参数replacement可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将替换文本使用。第一批参数表示匹配到的字符(有可能不止一个),第二批参数表示匹配到的字符最小索引位置(RegExp.index),第三个参数表示被匹配的字符串(RegExp.input)。

(function (window) {  
    function fn(str) {  
        this.str = str;  
    }  
    fn.prototype.format = function () {  
        // var arg = Array.from(arguments);
        var arg=Array.prototype.slice.call(arguments)
        return this.str.replace(/\{(\d+)\}/g, function (a, b) {
            console.log(a)  
            return arg[b] || '';  
        });  
    }  
    window.fn = fn;  
})(window);  
// use  
(function(){  
    var t = new fn('<p><a href="{0}">{1}</a><span>{2}</span></p>');
    console.log( t.format('http://www.alibaba.com', 'Alibaba', 'Welcome') );  
})();

 

另一个例子:驼峰转换

    /**
     * _test_you_are_idiot==>__testYouAreIdiot
     * 注意点1:有可能有多个_所以要_+表示大于等于1
     * 注意点2:是否是第一个匹配的问题,因此会用到第二个参数
     */        
        const toCamelCaseVar = (variable) => /* TODO */
        {
            return variable.replace(/_+[a-zA-Z]/g,(my, idx) => {
                console.log(my)
                console.log(idx)
                console.log(my.match(/[a-zA-Z]/)[0])
                if(idx) return (my.match(/[a-zA-Z]/)[0].toUpperCase());
                else return my;
            })
        }
        console.log(toCamelCaseVar('__this_m__y__'))

正则部分的知识点请移步我的:JavaScript正则 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值