字符串 String

字符串的介绍

  1.字符串(String)对象是JavaScript原生三大包装对象之一,用来生成字符串对象。

  

包装对象指的是数据类型为Number、String和Boolean的值对应的原生对象;
三大包装对象能力在于:

a.能够将上述基本类型值包装成真正的对象,从而体现JavaScript语言一切皆对象的特点;
b.是字面量使用对应包装对象的方法的内在原理;
c.是进行数据类型转换的利器;

  2.标志: 引号   " "    ' '

  3.字符串的创建:

var s1 = 'abc';       //字面量方式创建
var s2 = new String('abc');   //构造函数方式创建

typeof s1 // "string"     //字面量创建的类型为Srting
typeof s2 // "object"    //构造函数返回的类型为对象

  4.字符串的索引与长度

    字符串对象类似于数组,也拥有索引值

new String('abc')
// String {0: "a", 1: "b", 2: "c", length: 3}
(new String('abc'))[1] // "b"

  5.遍历:

    上面代码中,字符串abc对应的字符串对象,有数值键(0、1、2)和length属性,所以可以像数组那样取值。

    循环遍历,for-in (四种遍历方式)

var str = "这是 一个字符串!";
    for(i in str){
        console.log(str[i]);
    }

// 这是 一个字符串!

字符串的一些方法

      1.str.indexOf(value,a);

      功能:检测字符是否存在,存在返回索引值,查不到返回-1;

      参数: value:需要查找的字符

          a:开始查找的起始位置(默认为0,重头查找)

      (可以用这个方法实现字符串去重)

 1     // 字符去重
 2     function norepeatString(str) {
 3         var temp = new String();
 4         for(i in str){
 5             if(temp.indexOf(str[i])==-1){ //检测temp中是否存在原数组中的字符,有则略过,没有则写入
 6                 temp += str[i];    //拼接字符串
 7             }
 8         }
 9         return temp;
10     }

  2.str.charAt();

      功能:根据索引查字符

      返回值:返回指定位置的字符,参数是从0开始编号的位置

需要注意的是,如果参数为负数,或者大于等于字符串的长度,charAt返回 空字符串。
var str = "hello,world";
console.log(str.charAt(1)); // e

这个方法我们可以使用数组下标来代替。

var str = "hello,world";
console.log(str[1]);//e

  

  3.str.slice(a,b);

    截取 从a开始到b-1结束;

    slice() 方法提取某个字符串的一部分,并返回一个新的字符串,且不会改动原字符串。

'JavaScript'.slice(0, 4) // "Java"

如果省略第二个参数,则表示子字符串一直到原字符串结束。

'JavaScript'.slice(4) // "Script"

如果参数是负值,表示从结尾开始倒数计算的位置,即该负值加上字符串长度。

'JavaScript'.slice(-6) // "Script"
'JavaScript'.slice(0, -6) // "Java"
'JavaScript'.slice(-2, -1) // "p"

如果第一个参数大于第二个参数,slice方法返回一个空字符串。

'JavaScript'.slice(2, 1) // ""


  4.str.substr(a,b);

    截取 从a开始截取b个;


  5.str.substring(a,b);

    截取 从a开始到b-1结束;

    substring方法用于从原字符串取出子字符串并返回,不改变原字符串,跟slice方法很相像。

    它的第一个参数表示子字符串的开始位置,

    第二个位置表示结束位置(返回结果不含该位置)。  

'JavaScript'.substring(0, 4) // "Java"

//如果省略第二个参数,则表示子字符串一直到原字符串的结束。 'JavaScript'.substring(4) // "Script"

//如果第一个参数大于第二个参数,substring方法会自动更换两个参数的位置。 'JavaScript'.substring(10, 4) // "Script" // 等同于 'JavaScript'.substring(4, 10) // "Script"

上面代码中,调换substring方法的两个参数,都得到同样的结果。

//如果参数是负数,substring方法会自动将负数转为0。

'JavaScript'.substring(-3) // "JavaScript"
'JavaScript'.substring(4, -3) // "Java"

上面代码中,第二个例子的参数-3会自动变成0,等同于'JavaScript'.substring(4, 0)。由于第二个参数小于第一个参数,会自动互换位置,所以返回Java。

由于这些规则违反直觉,因此不建议使用substring方法,应该优先使用slice。

 

  6.str.split("");

    分割成数组
      

//不传参:将字符串变成数组
"hello".split() = ["hello"]
//传空字符:每一个分割;
"hello".split("") = ["h","e","l","l","o"]
//传指定字符:以指定字符分割
"2019-08-13".split("-") = ["2019","08","13"]

split方法还可以接受第二个参数,限定返回数组的最大成员数。

'a|b|c'.split('|', 0) // []
'a|b|c'.split('|', 1) // ["a"]
'a|b|c'.split('|', 2) // ["a", "b"]
'a|b|c'.split('|', 3) // ["a", "b", "c"]
'a|b|c'.split('|', 4) // ["a", "b", "c"]

  7.str.replace(a,b);

    替换,将a替换为b,只能替换一个;

var str = "aabc".replace("a","b");
    console.log(str);  //babc

 

    

      

posted @ 2019-08-25 20:59  竹薙  阅读(197)  评论(0编辑  收藏  举报