数组方法详见: 总结js数组的方法介绍及应用_AI_huihui的博客-CSDN博客
一、字符串特性
在JavaScript中, 字符串 的值是 不可变的 ,意思就是一旦字符串被创建,其内部是不能被改变的,例如:
let str = 'csdn';
str[0] = 'ss';
这是不能够实现的,只能通过重新赋值的方式来改变变量,just like this
let str = 'csdn';
str = 'automan';
console.log(str); // automan
注意:尽量不要大量拼接字符串,占内存。
二、常用字符串方法
-
charAt(index) --- 根据索引获取指定位置的字符
let str = 'abcdefg'; console.log(str.charAt(0)); //a
-
charCodeAt(index) --- 根据索引获取ASCII值
let str = 'abcdefg'; console.log(str.charCodeAt(0)); //97
-
str[index] --- 根据索引获取指定位置的字符 (H5中的方法)
let str = 'abcdefg'; console.log(str[0]); //a
-
concat() --- 拼接字符串 等效于 ' ' + ' '
let str1 = 'abcdefg'; let str2 = 'higklmn'; console.log(str1.concat(str2)); //abcdefghigklmn
-
slice(start,end) --- 根据索引从start截取字符串到end位置,end值取不到
let str = '我是小白'; console.log(str.slice(1)); //是小白 从索引1开始到最后 console.log(str.slice(1, 3)); //是小 从索引1开始到索引3,3取不到 console.log(str.slice(-1)); // 白 console.log(str.slice(3,1)); // 空 console.log(str.slice(1,1)); //空 console.log(str.slice(1,-1)); //是小 将第二个的值与字符串的长度相加,然后将得到的结果当做新的y值
-
substring(start,end) --- 根据索引从start截取字符串到end位置,end值取不到
let str = 'handsome'; console.log(str.substring(1)); //andsome 从索引1开始到最后进行截取 console.log(str.substring(1, 3)); //an 从索引1开始到索引3,3取不到 console.log(str.substring(-1)); //handsome 当为负值时,会将值看做0 console.log(str.substring(3,1)); //an 此时会自动将x与y的位置进行互换,从索引1开始到索引3,3取不到 console.log(str.substring(1,1)); //空 console.log(str.substring(1,-1)); //h 第二个值为负值时,会将此值看做0,就会提取第一个值之前(不包含第一个值)的所有字符串
-
substr(start,length) --- 根据索引从start位置开始,截取length长度个字符
let str = 'beautiful'; console.log(str.substr(1)); //eautiful 从参数为1下标开始到字符串结尾进行截取 console.log(str.substr(1, 3)); //eau 从索引1开始截取长度为3的字符串 console.log(str.substr(-1)); //l 当为负值时,和长度相加然后从此下标开始提取到最后 console.log(str.substr(3,1)); //u 从索引3开始截取长度为1的字符串 console.log(str.substr(1,-1)); //空 返回一个空字符串
-
indexOf(字符) --- 返回字符在字符串中的位置
let str = '童话镇 --- 陈一发'; console.log(str.indexOf('话')); //1 从前往后返回第一个符合的字符下标 console.log(str.indexOf('-')); //4 从前往后返回第一个符合的字符下标 console.log(str.indexOf('')); //0 查找空字符串则返回0 console.log(str.indexOf(' ')); //3 可以查找空格 console.log(str.indexOf('好听')); //-1 查询不到则返回-1
-
lastIndexOf(字符) --- 从后往前找,返回第一个匹配的字符的下标
let str = '童话镇 --- 陈一发'; console.log(str.lastIndexOf('话')); //1 从后往前找第一个符合的字符并返回下标 console.log(str.lastIndexOf('-')); //6 从后往前找第一个符合的字符并返回下标 console.log(str.lastIndexOf('')); //11 从后往前查找空的字符串,所以返回11 console.log(str.lastIndexOf(' ')); //7 可以查询到空格 console.log(str.lastIndexOf('好听')); //-1 找不到返回-1
-
trim() --- 去除首尾两端的空白
let str = ' 前端 '; console.log(str.trim()); //前端 //只能去除字符串前后空白
-
split(字符串/正则,length) --- 以一个分割符或正则,将一个字符串进行分割并返回一个数组
let str = '当你孤单 你会想起谁'; console.log(str.split('')); //['当', '你', '孤', '单',' ','你', '会', '想', '起','谁'] console.log(str.split(' ')); //['当你孤单','你会想起谁'] str='14:08:31' console.log(str.split(':',2)); //[ '14', '08' ] 第二个参数是数组长度
-
replace(searchValue,replaceValue) --- 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串
第一个参数:可以是一个字符串或者一个正则表达式对象。
第一种情况:如果第一个参数是一个字符串,那么searchValue只会在第1次出现的地方被替换。
let str = '当你孤单 你会 想起谁'; console.log(str.replace(' ','/')); //当你孤单/你会 想起谁
上面这例子就证明searchValue是一个字符串时,只会在第1次出现的地方被替换。
第二种情况:如果searchValue是一个正则表达式并且带有g标识,它会替换所有的匹配。如果没有带g标识,它会仅替换第1个匹配。
console.log(str.replace(/\s/g,'/')); //当你孤单/你会/想起谁
-
大小写转换
1.toLocaleUpperCase() //转化为大写
2.toLocaleLowerCase() //转化为小写
3.toLowerCase() //转换为小写
4.toUpperCase() //转换为大写
let str = 'JIANHUI'; console.log(str.toLocaleLowerCase()); //jianhui console.log(str.toLowerCase()); //jianhui let nextStr = 'jianhui'; console.log(nextStr.toLocaleUpperCase()); //JIANHUI console.log(nextStr.toUpperCase()); //JIANHUI
第一个和第二个转换方法是针对特定地区的实现,比如少数语言等
-
match(regexp) ---可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配
let str = 'match change'; console.log(str.match('change')); //[ 'change', index: 6, input: 'match change', groups: undefined ] //返回一个数组,其中存放了与找到的匹配文本有关的信息 console.log(str.match(/^[a-z]*/)); //[ 'match', index: 0, input: 'match change', groups: undefined ]
-
localeCompare() --- 用本地特定的顺序来比较两个字符串
返回一个数字来指示一个参考字符串是否在排序顺序前面或之后或与给定字符串相同。 新的locales、options 参数能让应用程序定制函数的行为即指定用来排序的语言。 locales 和 options 参数是依赖于具体实现的,在旧的实现中这两个参数是完全被忽略的
let arr = ['南京', '北京', '上海', '杭州', '深圳']; function sortPlace (arr) { // 参数: 排序的数组 arr.sort(function (item1, item2) { return item1.localeCompare(item2, 'zh-CN'); }) } sortPlace(arr); console.log(arr); // ["北京", "杭州", "南京", "上海", "深圳"]
-
fromCharCode() --- 将 Unicode 编码转为字符
var n = String.fromCharCode(72, 69, 76, 76, 79); console.log(n); //HELLO
-
valueOf() --- 可返回 String 对象的原始值
let str = 'chen'; console.log(str.valueOf());//chen
-
startsWith() --- 查看字符串是否以指定的子字符串开头
let str = 'chen'; console.log(str.startsWith('c'));//true console.log(str.startsWith('a'));//false
-
length属性 --- 字符串长度
let str = 'abcdefg'; console.log(str.length); //7