美文网首页
字符串的一些方法

字符串的一些方法

作者: VivaLaVida_692c | 来源:发表于2019-04-04 16:00 被阅读0次

    1.charAt 返回指定索引出的字符

    var str='abcd';

    var a=str.charAt(0);

    console.log(a); //'a'

    console.log(str); //'abcd'

    2.charCodeAt 返回指定索引出的unicode字符

     str.charCodeAt(0);   //97

    3.indexof  判断一个字符第一次出现在某个字符串的索引,如果包含返回它的索引,如果不包含返回-1.

    str.indexOf('a');     //0

    str.indexOf('e');     //-1

    4.lastIndexOf 判断一个字符最后一次出现在某个字符串的索引,如果包含返回它的索引,如果不包含返回-1.

    str.lastIndexOf('b');   //1

    str.lastIndexOf('e');   //-1

    5.concat拼接2个字符串,返回一个新字符串,对原有字符串没有任何改变。

    var str='qwe';

    var str1='abc';

    var str2=str.concat(str1);

        console.log(str2);//"qweabc"

    6.substr(n,m) 从索引n开始,截取m个字符,将截取的字符返回,对原字符串没有任何改变。

    var b=s.substr(1,1)

    console.log(b);  //'w'

    7.substring(n,m)   从索引n开始,截取到索引m,不包括m.将截取的字符返回,对原字符串没有任何改变.

    var ee=str.substring(1,3);

    console.log(ee);  //"bc"

    8.slice(n,m)   从索引n开始,截取到索引m,不包括m.将截取的字符返回,对原字符串没有任何改变.

    var aa=str.slice(0,3);

    console.log(aa);//'abc'

    9.split  用指定字符分割字符串,返回一个数组.对原字符串没有任何改变。

    var a=str.split('');

    console.log(a);  //["a", "b", "c", "d"]

    10.replace('a',1);  替换指定字符,返回替换后新的字符串,对原有字符串有改变。(第一个参数可以是正则表达式) 只能替换一次 ,配合正则模式修饰符g使用

    var str='aaaaee';

    var reg=/a/g;

    str.replace(reg,1);   //"1111ee"

    11.match() 可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。把找到的字符放在数组里,返回一个数组。

    var str='aaaa3ed33';

    var reg=/a/g;

    str.match(reg);  //["a", "a", "a", "a"]

    12.search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。

    es6新增加的方法

    1.codePointAt()  能够正确处理4个字节储存的字符,返回指定索引出一个字符的码点。codePointAt方法是测试一个字符由两个字节还是由四个字节组成的最简单方法。

    var s='𠮷a';

    s.codePointAt(0) // 134071

    s.codePointAt(1)// 57271

    codePointAt方法返回的是码点的十进制值,如果想要十六进制的值,可以使用toString方法转换一下。

    vars='𠮷a';s.codePointAt(0).toString(16)// "20bb7"s.codePointAt(2).toString(16)// "61"不能识别32位的UTF-16字符

    配合for...of循环使用,因为它会正确识别32位的UTF-16字符。

    vars='𠮷a';for(letchofs){console.log(ch.codePointAt(0).toString(16));}// 20bb7// 61

    2.codePointAt用于从码点返回对应字符,但是这个方法不能识别32位的UTF-16字符(Unicode编号大于0xFFFF)。

    String.fromCodePoint(0x20BB7)// "𠮷"String.fromCodePoint(0x78,0x1f680,0x79)==='x\uD83D\uDE80y'// true

    3.for..of  字符串的遍历器接口

    for(letcodePointof'foo'){console.log(codePoint)}// "f"// "o"// "o"

    4.at()  返回指定索引处的字符

    'abc'.at(0)// "a"'𠮷'.at(0)// "𠮷"

    5.includes():返回布尔值,表示是否找到了参数字符串。这三个方法都支持第二个参数,表示开始搜索的位置。

    6.startsWith():返回布尔值,表示参数字符串是否在源字符串的头部。这三个方法都支持第二个参数,表示开始搜索的位置。

    7.endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部。这三个方法都支持第二个参数,表示开始搜索的位置。

    vars='Hello world!';s.startsWith('world',6)// trues.endsWith('Hello',5)// trues.includes('Hello',6)// false

    8.repeat()  方法返回一个新字符串,表示将原字符串重复n次。

    'x'.repeat(3)// "xxx"'hello'.repeat(2)// "hellohello"'na'.repeat(0)// ""

    9.padStart(),padEnd()字符串补全长度的功能

       padStart()用于头部补全

       padEnd()用于尾部补全

    padStart和padEnd一共接受两个参数,第一个参数用来指定字符串的最小长度,第二个参数是用来补全的字符串。

    'x'.padStart(5,'ab')// 'ababx''x'.padStart(4,'ab')// 'abax''x'.padEnd(5,'ab')// 'xabab''x'.padEnd(4,'ab')// 'xaba'

    如果原字符串的长度,等于或大于指定的最小长度,则返回原字符串。

    'xxx'.padStart(2,'ab')// 'xxx''xxx'.padEnd(2,'ab')// 'xxx'

    如果用来补全的字符串与原字符串,两者的长度之和超过了指定的最小长度,则会截去超出位数的补全字符串。

    'abc'.padStart(10,'0123456789')

    如果省略第二个参数,默认使用空格补全长度。

    'x'.padStart(4)// '  x''x'.padEnd(4)// 'x  '

    字符串实际应用的一些操作

    1.提取URL 中的各个GET 参数(参数名和参数个数不确定),将其按key-value 形式返回到一个json 结构中,如{a:’1′, b:’2′, c:”, d:’xxx’, e:undefined}

    function serilizeUrl(url) {

    var urlObject = {};

    if (/\?/.test(url)) {

    var urlString = url.substring(url.indexOf("?") + 1);

    var urlArray = urlString.split("&");

    for (var i = 0, len = urlArray.length; i < len; i++) {

    var urlItem = urlArray[i];

    var item = urlItem.split("=");

    urlObject[item[0]] = item[1];

    }

    return urlObject;

    }

    return null;

    }

    2.已知有字符串foo=”get-element-by-id”,写一个function 将其转化成驼峰表示法”

    function combo(msg){

    var arr=msg.split("-");//[get,element,by,id]

    for(var i=1;i<arr.length;i++){

    arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substr(1,arr[i].length

    -1);//Element

    }

    msg=arr.join("");//msg=” getElementById”

    return msg;

    }

    3.找出字符串每个字符出现的个数

    var str='aabbccddddd';

    var objs=[];

    for(var i=0;i<str.length;i++){

    var flag=true;

    for(var j=0;j<objs.length;j++){

    if(str.charAt(i)==objs[j].name){

    objs[j].count++;

    flag=false;

    }

    }

    if(flag){

    objs.push({name:str.charAt(i),

    count:1})

    }

    }

    4.清除字符串空格

            1.使用正则表达式

    // str = str.replace(/\s*/g,"");    //去除所有空格   

    //

    // str = str.replace(/^\s*|\s*$/g,"");//去除两头空格:

    //

    // str = str.replace( /^\s*/, “”);    //去除左空格

    //

    // str = str.replace(/(\s*$)/g, "");  //去除右空格:

            2.使用str.trim()方法

    // var str = ' xiao ming ';

    // var str2 = str.trim();  //只能去除两端的空格,不能去除中间

    5.字符串中奇偶字母分别是

    var str = 'asdfsadfasd';

    var arr = str.split('');

    var arr1 =[];

    var arr2 =[];

    for(var i=0;i<arr.length;i++){

    if(i%2==0){

    arr1.push(arr[i]);

    }else{

    arr2.push(arr[i]);

    }

    }

    console.log(arr1,arr2)

    6.判断一个字符中出现次数最多的字符,统计次数

    var str='asjhkhdfsasasaaaasa';

    var json={};

    for(var i=0;i<str.length;i++){

    if(!json[str.charAt(i)]){

    json[str.charAt(i)]=1;

    }else{

    json[str.charAt(i)]++;

    }

    }

    console.log(json);

    var iMax =0;

    var iIndex = '';

    for(var prop in json){

    if(iMax<json[prop]){

    iMax=json[prop];

    iIndex=prop;

    }

    }

    console.log('出现最多的是:'+iIndex+'出现'+iMax+'次');

    相关文章

      网友评论

          本文标题:字符串的一些方法

          本文链接:https://www.haomeiwen.com/subject/bthqiqtx.html