• js字符串操作方法


    提示:ECMAScript 中的字符串是不可变的,字符串不能更改,只能替换。所以以下操作方法均不能改变原字符串,下面的讲解中将不对源字符串做打印观察,只打印观察新字符串的值。

    1. length

    获取字符串的长度

    var browserType = 'mozilla';
    browserType.length;//7
    

    2. str[idx]、charAt()、charCodeAt()

    str[idx] 属性访问
    charAt() 方法返回字符串中指定下标(位置)的字符串
    charCodeAt() 方法返回字符串中指定索引的字符 unicode 编码

    browserType[0];  //m
    browserType.charAt(0);  //m
    browserType[-2];  //undefined
    browserType.charAt(-2);  //""
    

    注意:小标是从0开始,不是1!

    使用属性访问有点不太靠谱:

    • 不适用 Internet Explorer 7 或更早的版本
    • 它让字符串看起来像是数组(其实并不是)
    • 如果找不到字符,[ ] 返回 undefined,而 charAt() 返回空字符串。
    • 它是只读的。str[0] = "A" 不会产生错误(但也不会工作!)

    例如:

    var str = "HELLO WORLD";
    str[0] = "A";             // 不产生错误,但不会工作
    str[0];                   // 返回 H
    

    3. indexOf() 、 lastIndexOf()

    indexOf()返回字符串中一个子串第一处出现的索引(从左到右搜索)。如果没有匹配项,返回 -1 。

    'mozilla'.indexOf('zill');  //2
    

    lastIndexOf()返回指定文本在字符串中最后一次出现的索引,如果没有匹配项,返回 -1

    var str = "abcdarf";
    var pos = str.lastIndexOf("a");  //4
    

    两种方法都接受作为检索起始位置的第二个参数。

    var str = "abcdarf";
    var pos = str.indexOf("a");  //0
    var pos = str.indexOf("a",1);  //4
    

    lastIndexOf() 方法向后进行检索(从尾到头),这意味着:假如第二个参数是4,则从位置4开始往左检索,直到字符串的起点。(个人的理解:lastIndexOf() 检索的本质是从右往左检索,返回该字符串第一次出现的位置,这里提到的下标位置均为从左往右的下标位置)

    var str = "bcda23a";
    str.lastIndexOf("a");  //6
    str.lastIndexOf("a",1);  //-1
    str.lastIndexOf("a",4);  //3
    

    search() 方法搜索特定值的字符串,并返回匹配的位置:

    var str = "bcda23daef";
    str.search('a');  //3
    str.earch(/da/ig);  //2
    

    与indexOf的区别:
    search() 方法无法设置第二个开始位置参数。
    indexOf() 方法无法设置更强大的搜索值(正则表达式)。

    5. slice()

    提取字符串的某个部分,并在新字符串中返回被提取的部分。
    slice(a,b) //获取范围[a,b)
    该方法设置两个参数:起始索引(开始位置 ),终止索引(结束位置)。可接受负的索引

    var str = "Apple, Banana, Mango";
    var res = str.slice(7,13);  //res "Banana"
    

    如果某个参数为负,则从字符串的结尾开始计数。

    var str = "Apple, Banana, Mango";
    str.slice(-14,-7);  //打印结果: " Banana"
    str.slice(5,-7);  // 打印结果:", Banana"
    //str不会改变
    

    如果省略第二个参数,则该方法将裁剪字符串的剩余部分:

    var str = "Apple, Banana, Mango";
    str.slice(-5);  //"Mango"
    str.slice(7);  //"Banana, Mango"
    

    提示:负值位置不适用 Internet Explorer 8 及其更早版本。

    6. substring()

    substring(start,end); //截取字符串 范围是[start, end)
    该方法设置两个参数:起始索引(开始位置),终止索引(结束位置)。无法接受负的索引。

    var str = "Apple, Banana, Mango";
    str.substring(7,13);  //"Banana"
    

    如果省略第二个参数,则该 substring() 将裁剪字符串的剩余部分。

    var  str =  'Hello world!';
    str.substring(3);   //"lo world!"
    

    7. substr()

    substr(a,b) //截取字符串,范围是从下标为a的字符开始,截取长度为b
    该方法设置两个参数:起始索引(开始位置 可为负数),截取的长度。

    var str = "Hello world!";
    str.subst(3,4);  //"lo w"
    

    如果省略第二个参数,则该 substr() 将裁剪字符串的剩余部分。

    var str = "Hello world!";
    str.subst(3);  //"lo world!"
    

    8. replace()

    用另一个值替换在字符串中指定的值,不会改变调用它的字符串。它返回的是新字符串。默认地,replace() 只替换首个匹配,并对大小写敏感:

    var str = "Hello world! hello";
    var res = str.replace('llo','*');  // "He* world! hello"
    var str = "HeLlo world! hello";
    var res = str.replace('llo','*');  // "HeLlo world! he*"
    

    如需执行大小写不敏感的替换,请使用正则表达式 /i(大小写不敏感),如需替换所有匹配,请使用正则表达式的 g 标志(用于全局搜索):

    var str = "HeLlo world! hello";
    str.replace(/llo/ig,'*');  //"He* world! he*"
    

    9. toUpperCase()、toLowerCase()

    toUpperCase() 把字符串转换为大写;toLowerCase() 把字符串转换为小写。

    var str= "Hello World!"; 
    str.toUpperCase();   //"HELLO WORLD!"
    str.toLowerCase();  //"hello world!"
    

    10. concat()

    concat() 连接两个或多个字符串。

    var str1 = "Hello";
    var str2= "World";
    var str3= str1.concat(str2);  //  "HelloWorld"
    var str4 = str1.concat(" ",str2,"!");  //"Hello World!"
    

    11. trim()

    trim() 方法删除字符串两端的空白符。

    var str = "       Hello World!        ";
    str.trim();  //  "Hello World!"
    

    警告:Internet Explorer 8 或更低版本不支持 trim() 方法。

    12. split()

    可以通过 split() 将字符串转换为数组。可接受正则匹配。

    var str = "a,fr,34, 2019/06/28,t";
    str.split('');//["a", ",", "f", "r", ",", "3", "4", ",", " ", "2", "0", "1", "9", "/", "0", "6", "/", "2", "8", ",", "t"]
    str.split(',');//["a", "fr", "34", " 2019/06/28", "t"]
    str.split('/');//["a,fr,34, 2019", "06", "28,t"]
    str.split(' ');//["a,fr,34,", "2019/06/28,t"]
    str.split(/,|/|s/g);//["a", "fr", "34", "", "2019", "06", "28", "t"]
    
  • 相关阅读:
    2012年决胜HTML5 十四大Web预测盘点
    王海波:Discuz! X 社区功能架构
    史应生:Linux操作系统的性能优化技术
    虚拟还原原理解析
    金山张宴:PHP在金山游戏运营中的应用
    java方法的参数传递
    java逻辑连接词总结
    java名称命名规范
    java引用包的两种方式
    java信息的封装和隐藏
  • 原文地址:https://www.cnblogs.com/SPHmomo/p/12937016.html
Copyright © 2020-2023  润新知