字符串概述
字符串是 JavaScript 的一种基本的数据类型。
JavaScript 的字符串是不可变的,String 类定义的方法都不能改变字符串的内容。
var str = "hello world";
str = 'abc';
当重新给str赋值的时候,常量'hello world'不会被修改,依然在内存中
重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变
由于字符串的不可变,在大量拼接字符串的时候会有效率问题
length属性:该属性返回当前字符串的长度
console.log(str.length);
字符串常用方法:
1)charAt();
返回指定索引的字符;超出索引返回的是空字符串(默认索引为0)
var str = "hello";
for(var i = 0; i<str.length; i++){
document.write(str.charAt(i));//hello
}
2)str.substr(start,length);
从原始字符串中提取一个子字符串并返回; start 位置开始索引; length 提取字符的长度。若length省略,则从 start位置开始提取直到原字符串末尾。
如果 start 为正值,且大于或等于字符串的长度,则 substr 返回一个空字符串。
如果 start 为负值,则 substr 把它作为从字符串末尾开始的一个字符索引。如果 start 为负值且 start 的绝对值大于字符串的长度,则 substr 使用 0 作为开始提取的索引。
var str = "hello world";
var str2 = str.substr(3,2);
console.log(str2);//lo
3)str.substring(start,end);
从原始字符串中截取一个子字符串并返回;从start 位置开始截取,截取到 end-1位置结束;如果省略 end,substring 一直截取到字符串末尾。
var str = "helloworld";
var str2 = str.substring(0,3);
console.log(str2);//hel
4)静态 String.fromCharCode();
该方法返回使用指定的Unicode值(ASCII码对应的值)序列创建的字符串。;该方法返回一个字符串,而不是一个 String 对象。
由于 fromCharCode 是 String 的静态方法,所以使用时用大写的String通过点运算符调用
var str = String.fromCharCode(65,90,97,122);
console.log(str); //AZaz
5)str.concat(str1,str2,…);
该方法将一个或多个字符串与原字符串连接合并,形成新的字符串返回(不影响原字符串)
var str1 = "Hello",str2 = "World";
var str = str1.concat(str2,"哈哈");
console.log(str);//HelloWorld哈哈
6)str.indexOf(searchValue, fromIndex);
返回指定字符串(searchValue 需要查找的字符串)在原始字符串中第一次出现的索引值,查找顺序从左往右查找,返回的是指定字符串的第一个字符的索引(若存在)。如果没有找到,则返回-1。第二个参数为 指定索引开始位置,可省略
var str = "Hello World Hello World";
var index = str.indexOf('lo',4);
console.log(index);//15
7)str.lastIndexOf(searchValue,fromIndex);
功能同 indexOf() 方向从右往左查找
var str = "Hello World Hello World";
var index = str.lastIndexOf('lo');
console.log(index,14);//3
8)str.split(separator,limit);
使用指定的分隔符字符串(separator)将一个String对象分割成字符串数组;该分割符为原字符串的子字符串;limit 一个整数,限定返回的分割片段数量(可选)。
var str = "Hello World Hello World";
var arr = str.split(' ',2);
console.log(arr);//["Hello", "World"]
9)str.slice(start,end);
截取字符串的一部分并返回,如果只有一个参数,则从当前下标开始截取直到最后(若为负数,则从数组尾部算起,例如 -1 代表最后一个 元素,-2代表倒数第二个,以此类推);如果有两个参数,则从 start 开始截到 end-1 结束。
var str = "Hello World Hello World";
var str2 = str.slice(2,3);//该方法可以用来复制字符串
console.log(str2);//l
10)str.replace(substr,newSubStr);
该方法将原字符串中的 substr,替换为newSubStr(只会替换第一个匹配的字符串),并返回一个新的字符串(该方法并不修改原字符串)
var str = "Hello World Hello World";
var str2 = str.replace('Hello', '哈哈');
console.log(str2);//哈哈 World Hello World
console.log(str);//Hello World Hello World
11)str.match(regexp);
该方法检索返回一个字符串匹配正则表达式的的结果;参数为一个正则表达式对象。如果传入一个非正则表达式对象(仅返回第一个匹配的下标),则会隐式地使用 new RegExp(obj) 将其转换为一个 RegExp 。如果没有给出任何参数并直接使用match() 方法 ,将会得到一个包含空字符串的 Array :[""]
var str = "Hello World Hello World";
var str2 = str.match('lo');
console.log(str2);//["lo", index: 3, input: "Hello World Hello World", groups: undefined]
12)str.search(regexp);
方法执行正则表达式和 String对象之间的一个搜索匹配。参数为一个正则表达式(regular expression)对象。如果传入一个非正则表达式对象,则会使用 new RegExp(obj) 隐式地将其转换为正则表达式对象。如果匹配成功,则返回正则表达式在字符串中首次匹配项的索引。否则,返回 -1。
var str = "Hello World Hello World";
var str2 = str.search('lo');
console.log(str2);//3
13)str.toLowerCase();
将调用该方法的字符串值转为小写形式,并返回。toLowerCase 不会影响字符串本身的值。
var str = "Hello World Hello World";
var str2 = str.toLowerCase();
console.log(str2);//hello world hello world
14)toLocaleLowerCase();
该方法返回调用该方法的字符串被转换成小写之后的值,转换规则根据任何本地化特定的大小写映射。toLocaleLowerCase()并不会影响字符串自身的值。在大多数情况下,该方法产生的结果和调用toLowerCase()的结果相同,但是在某些本地环境中,比如土耳其语,它的大小写映射并不遵循在Unicode中的默认的大小写映射,因此会有一个不同的结果。
var str = "Hello World Hello World";
var str2 = str.toLocaleLowerCase();
console.log(str2); //hello world hello world
15)str.toUpperCase();
将字符串转大写并返回
var str = "Hello World Hello World";
var str2 = str.toUpperCase();
console.log(str2);//HELLO WORLD HELLO WORLD
16)toLocaleUpperCase()
该方法返回的是将输入的字符串根据本地化的大小写映射规则转化成的大写形式的新字符串。toLocaleUpperCase() 不会影响输入的字符串本身的值. 大多数情况下,这个方法与 toUpperCase() 会产生相同的值,但是对于一些语言(locale),例如土耳其语,因为它们的大小写映射规则与Unicode默认的映射规则不同,所以调用这两个方法将会产生不同的结果。
var str = "Hello World Hello World";
var str2 = str.toLocaleUpperCase();
console.log(str2);//HELLO WORLD HELLO WORLD
17)str.trim();
清除字符串首尾的空字符,并返回清除后的字符串
var str = " Hello World Hello World ";
console.log(str);
var str2 = str.trim();// Hello World Hello World
console.log(str2);//Hello World Hello World