Java Script 内置对象(四) --------- String 对象

本文深入讲解JavaScript中字符串的各种操作技巧,包括字符串的基本包装类型、不可变性、字符位置查询、字符串拼接与截取等核心知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开始说明 String 内置对象前,首先我们来看两行简单的代码:

var str='abcde';

console.log(str.length);  //输出5

结果会输出 str 的长度 5,但是我们知道对象及复杂的数据类型才会有属性和方法,为什么这个简单的数据类型会有 length 属性呢???

这就是此文章的内容:基本包装类型

一:基本包装类型

什么是基本包装类型呢?就是把简单数据类型包装为复杂数据类型:

var str='abcde';  

var temp=new String('abcde');  //简单数据类型转换为复杂数据类型

str=temp;  //临时变量赋值给str

temp=null;  //销毁临时变量

在 JS 中,除了String可以包装外,Number,Boolean 也可以进行包装,包装为复杂的数据类型后,就可以使用更多的属性和方法


二:字符串不可变

我们再看几行代码:

var str='aaa';

console.log(str);

str='bbb';

console.log(str);

可是字符串不是改变了吗?为什么还说字符串不可变呢,其实我们说的字符串不可变是开辟过空间后空间内的值不会消失,只是输出的结果看上去改变了,是地址在变,但是值没有变

我们先开辟了一块空间,地址里存放的内容为aaa,str指向这个地址,所以输出aaa

接着我们又新开辟了一个内存空间,地址里存放内容为bbb,str指向新的地址,所以输出结果改变,但空间内的值并没有改变

 因此在开发中不要过多的重新赋值与拼接字符串,会大量占用电脑内存使其卡顿


三:根据字符返回位置

数组中我们了解了 indexOf() 方法和 lastIndexOf() 方法,字符串既然是基本包装类型,也可以使用这些方法,使用方法与数组相同,这里拓展新的参数,从自定义的索引位置开始查找


indexOf( 要查找的字符 ,要开始查找的索引位置)

lastIndexOf( 要查找的字符 ,要开始查找的索引位置)

从索引2 开始查找b的位置:

var str='abcdeabcde';

console.log(str.indexOf('b',2));  //从索引2开始查找b的位置

四:返回字符出现的位置和次数

思路:先查找第一次出现的位置,结果不是-1 就接着查到的位置的索引加一继续往后查找

var str='abcgdivywmasgcashdruaydcvuatyfnsya';

var index=str.indexOf('a');

var num=0;

while(index!=-1){

    console.log(index);

    num++;

    index=str.indexOf('a',index+1);

}

console.log('a出现过的次数为:' + num);


五:根据位置返回字符

我们不仅可以根据字符返回位置,也可以根据位置来返回对应的字符


  • charAt( index ):参数为索引位置,返回值为该索引对应的字符
  • charCodeAt( index ):参数为索引位置,返回值为该索引处的字符对应的 ASCII 码(键盘上每个键都对应一个ASCII码,实际开发中用于判断用户按了那个键)
var str='abcgdivywmasgcashdruaydcvuatyfnsya';

console.log(str.charAt(0));

console.log(str.charCodeAt(0));

str[ index ]:此方法为H5新增方法。返回指定位置处字符

var str='abcgdivywmasgcashdruaydcvuatyfnsya';

console.log(str[0]);


六:判断出现最多次数的字符

思路分析:利用 charAt() 得到字符串中的每一个字符,创建一个空对象,判断该对象中有没有该字符,有的话让该字符自增1,没有的话将该对象的属性值赋为1,然后再遍历对象,用判断数组最大值的方法同样去得到对象内属性值最大的一个

var str=prompt('请随机输入一串字符');

var obj={};

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

    var chars=str.charAt(i);

    if(obj[chars]){

        obj[chars]++;

    }

    else{

        obj[chars]=1;

    }

}

console.log(obj);

var max=0;

var ch='';

for(var k in obj){

    if(obj[k]>max){

        max=obj[k];

        ch=k;

    }

}

console.log('最大值为' + ch + '共出现了' + max + '次');

七:拼接字符串

concat( 要拼接的内容 )  有参数,参数为要拼接的内容,效果等同于字符串的 +

var str='abcd';

var str2='efgh';

console.log(str.concat(str2));

或者

var str='abcd';

console.log(str.concat('efgh'));

效果相同,均为:


八:截取字符串

substr( 起始位置,截取几个字符 )  有2个参数,参数分别为起始的截取位置和要截取几个字符

var str='今天天气真晴朗';

console.log(str.substr(5,2));


九:替换字符串

replace( 要替换掉的字符,要替换的字符 )  有两个参数,分别为要替换掉的字符和要替换的字符,要注意如果字符串里有多个要替换的字符,那么这个方法只能替换掉第一次出现的字符

如果想把字符串的目标字符全部替换掉,需要用循环:

var str='abatgcuyaycta';

while(str.indexOf('a')!=-1){

    str=str.replace('a','*');

}

console.log(str);


十:字符串转换为数组 

split( 字符串使用的分隔符 ) 有参数,参数取决于字符串内用的分隔符

var str='a,b,c,d';

var str2='a$b$c$d';

console.log(str.split(','));

console.log(str2.split('$'));


还有两个转换大小写的方法:

转换为大写:toUpperCase()

转换为小写:toLowerCase()

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡卡西最近怎么样

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值