JavaScript总结之内置对象(字符串)

1、字符串对象

1.1、字符串的不可变性

指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间。

var str = 'abc';
str = 'hello';
// 当重新给 str 赋值的时候,常量'abc'不会被修改,依然在内存中
// 重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变
// 由于字符串的不可变,在大量拼接字符串的时候会有效率问题

1.2、根据字符返回位置

方法名 说明
indexOf(‘要查找的字符’,‘开始的位置’) 返回指定内容在元字符串中的位置,如果找不到就返回-1,开始的位置是index索引号
lastIndexOf() 从后往前找,只找第一个匹配的
// 字符串对象  根据字符返回位置  str.indexOf('要查找的字符', [起始的位置])
  var str = '改革春风吹满地,春天来了';
  console.log(str.indexOf('春')); //默认从0开始查找 ,结果为2
   console.log(str.indexOf('春', 3)); // 从索引号是 3的位置开始往后查找,结果是8

1.2.1、返回字符位置

查找字符串 “abcoefoxyozzopp” 中所有o出现的位置以及次数

  • 核心算法:先查找第一个o出现的位置
  • 然后 只要 indexOf返回的结果不是 -1 就继续往后查找
  • 因为 indexOf 只能查找到第一个,所以后面的查找,一定是当前索引加1,从而继续查找
var str = "oabcoefoxyozzopp";
var index = str.indexOf('o');
var num = 0;
// console.log(index);
while (index !== -1) {
    
    
    console.log(index);
    num++;
    index = str.indexOf('o', index + 1);
}
console.log('o出现的次数是: ' + num);

1.3、根据位置返回字符

方法名 说明 使用
charAt(index) 返回指定位置的字符(index字符串的索引号) str.charAt(0)
charCodeAt(index) 获取指定位置处字符的ASCII码(index索引号) str.charCodeAt(0)
str[index] 获取指定位置处字符 HTML,IE8+支持和charAt()等效

1.3.1、返回字符位置

判断一个字符串 “abcoefoxyozzopp” 中出现次数最多的字符,并统计其次数

  • 核心算法:利用 charAt() 遍历这个字符串
  • 把每个字符都存储给对象, 如果对象没有该属性,就为1,如果存在了就 +1
  • 遍历对象,得到最大值和该字符
<script>
    //  判断一个字符串 'abcoefoxyozzopp' 中出现次数最多的字符,并统计其次数。
    // o.a = 1
    // o.b = 1
    // o.c = 1
    // o.o = 4
    // 核心算法:利用 charAt() 遍历这个字符串
    // 把每个字符都存储给对象, 如果对象没有该属性,就为1,如果存在了就 +1
    // 遍历对象,得到最大值和该字符
    var str = 'abcoefoxyozzopp';
    var o = {
    
    };
    for (var i = 0; i < str.length; i++) {
    
    
        var chars = str.charAt(i); // chars 是 字符串的每一个字符
        if (o[chars]) {
    
     // o[chars] 得到的是属性值
            o[chars]++;
        } else {
    
    
            o[chars] = 1;
        }
    }
    console.log(o);
    // 2. 遍历对象
    var max = 0;
    var ch = '';
    for (var k in o) {
    
    
        // k 得到是 属性名
        // o[k] 得到的是属性值
        if (o[k] > max) {
    
    
            max = o[k];
            ch = k;
        }
    }
    console.log(max);
    console.log('最多的字符是' + ch);
</script>

1.4、字符串的操作方法

方法名 说明
concat(str1,str2,str3…) concat() 方法用于连接两个或对各字符串。拼接字符串
substr(start,length) 从 start 位置开始(索引号), length 取的个数。
slice(start,end) 从 start 位置开始,截取到 end 位置 ,end 取不到 (两个都是索引号)
substring(start,end) 从 start 位置开始,截取到 end 位置 ,end 取不到 (基本和 slice 相同,但是不接受负)
<script>
    // 1. concat('字符串1','字符串2'....)
    var str = '迪迦';
    console.log(str.concat('奥特曼')); //迪迦奥特曼

    // 2. substr('截取的起始位置', '截取几个字符');
    var str1 = '迪迦奥特曼';
    console.log(str1.substr(0, 2)); // 0 是索引号的2   2 是取几个字符 //迪迦
</script>

1.5、replace()方法

replace() 方法用于在字符串中用一些字符替换另一些字符
其使用格式:replace(被替换的字符,要替换为的字符串)

<script>
    // 1. 替换字符 replace('被替换的字符', '替换为的字符')  它只会替换第一个字符
   var str = '迪迦奥特曼';
    console.log(str.replace('迪迦', '戴拿')); // 戴拿奥特曼
    // 有一个字符串 'abcoefoxyozzopp'  要求把里面所有的 o 替换为 *
    var str1 = 'abcoefoxyozzopp';
    while (str1.indexOf('o') !== -1) {
    
    
        str1 = str1.replace('o', '*');
    }
    console.log(str1);
</script>

1.6、split()方法

split() 方法用于切分字符串,它可以将字符串切分为数组。在切分完毕之后,返回的是一个新数组。
例如下面代码:

var str = 'a,b,c,d';
console.log(str.split(','));
// 返回的是一个数组 ['a', 'b', 'c', 'd']
<script>
// 2. 字符转换为数组 split('分隔符') 
    var str2 = 'red, pink, blue';
    console.log(str2.split(','));
    var str3 = 'red&pink&blue';
    console.log(str3.split('&'));
</script>

1.7、大小写转换

  • toUpperCase() 转换大写
  • toLowerCase() 转换小写

字符串方法由于时间原因 写些常见的 有待完善

猜你喜欢

转载自blog.csdn.net/weixin_64609738/article/details/127898849