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()

相关文章
|
2月前
|
JSON JavaScript 前端开发
js有哪些内置对象?
js有哪些内置对象?
|
23天前
|
JavaScript 前端开发
JavaScript 中如何检测一个变量是一个 String 类型?
JavaScript 中如何检测一个变量是一个 String 类型?
21 2
|
14天前
|
JavaScript
js 字符串String转对象Object
该代码示例展示了如何将一个以逗号分隔的字符串(`&#39;1.2,2,3,4,5&#39;`)转换为对象数组。通过使用`split(&#39;,&#39;)`分割字符串并`map(parseFloat)`处理每个元素,将字符串转换成浮点数数组,最终得到一个对象数组,其类型为`object`。
|
1月前
|
SQL JavaScript
js开发:请解释什么是ES6的模板字符串(template string),并给出一个示例。
ES6的模板字符串以反引号包围,支持变量和表达式插入以及多行书写。例如,插入变量值`Hello, ${name}!`,计算表达式`${num1 + num2}`,以及创建多行字符串。模板字符串保留原始空格和缩进,简化了字符串拼接,提高了代码可读性。
18 6
|
1月前
|
JavaScript 前端开发 Java
javascript中的String
javascript中的String
|
1月前
|
JavaScript 前端开发 索引
编程笔记 html5&css&js 067 JavaScript String数据类型
编程笔记 html5&css&js 067 JavaScript String数据类型
|
3月前
|
前端开发 JavaScript 算法
深入探究 JavaScript 中的 String:常用方法和属性全解析(下)
深入探究 JavaScript 中的 String:常用方法和属性全解析(下)
|
3月前
|
前端开发 JavaScript 索引
深入探究 JavaScript 中的 String:常用方法和属性全解析(中)
深入探究 JavaScript 中的 String:常用方法和属性全解析(中)
|
3月前
|
存储 前端开发 JavaScript
深入探究 JavaScript 中的 String:常用方法和属性全解析(上)
深入探究 JavaScript 中的 String:常用方法和属性全解析(上)
|
4月前
|
机器学习/深度学习 存储 前端开发
【前端|Javascript第5篇】全网最详细的JS的内置对象文章!3
【前端|Javascript第5篇】全网最详细的JS的内置对象文章!3