JS 的 String() 内置对象

简介: 一文掌握 JS 的 String() 内置对象

开始说明 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()

相关文章
|
6月前
|
JavaScript
js中常见的内置对象(js的问题)
js中常见的内置对象(js的问题)
28 0
|
13天前
|
JavaScript 前端开发 开发者
|
1月前
|
存储 JavaScript 前端开发
JavaScript 字符串(String) 对象
JavaScript 字符串(String) 对象
43 3
|
2月前
|
JavaScript 前端开发 Python
JavaScript写个.ts视频文件Url生成器,使用了string.padStart
JavaScript写个.ts视频文件Url生成器,使用了string.padStart
|
2月前
|
JavaScript 前端开发 API
javaScript中常用的String方法以及注意点总结
本文总结了JavaScript中常用的String对象的方法及其注意事项,包括大小写转换、字符获取、子字符串截取、字符串拼接、去除空格、替换、分割以及查找字符串中字符的索引等操作。提供了每种方法的使用示例代码,帮助理解它们的具体用法和差异。
38 2
|
3月前
|
JavaScript 算法 前端开发
JS算法必备之String常用操作方法
这篇文章详细介绍了JavaScript中字符串的基本操作,包括创建字符串、访问特定字符、字符串的拼接、位置查找、大小写转换、模式匹配、以及字符串的迭代和格式化等方法。
JS算法必备之String常用操作方法
|
2月前
|
JavaScript 前端开发
今天被JavaScript的String型和数字型的+运算撞了一下腰。
今天被JavaScript的String型和数字型的+运算撞了一下腰。
|
3月前
|
JavaScript 前端开发
JavaScript基础&实战(5)js中的数组、forEach遍历、Date对象、Math、String对象
这篇文章介绍了JavaScript中的数组、Date对象、Math对象以及包装类(String、Number、Boolean),并详细讲解了数组的创建、方法(如forEach、push、pop、unshift、slice、splice)和遍历操作,以及工厂方法创建对象和原型对象的概念。
JavaScript基础&实战(5)js中的数组、forEach遍历、Date对象、Math、String对象
|
3月前
|
JavaScript 开发者
js之内置对象学习
js之内置对象学习
29 0
|
5月前
|
JavaScript 前端开发 索引
JavaScript有7个数据类型:Number, String, Boolean, Null, Undefined, Symbol(BES6)和BigInt(ES10)组成基本类型
【6月更文挑战第25天】JavaScript有7个数据类型:Number, String, Boolean, Null, Undefined, Symbol(BES6)和BigInt(ES10)组成基本类型,而Object包括Array、Function等是引用类型。Objects可以包含键值对,Array是特殊的Object。Functions也是对象。`null`和`undefined`被视为特殊的原始值。
54 1