目录
- string数据类型
- 创建字符串的三种方式
- 检查字符串的方法
- 常用的字符串方法
- 字符串遍历
- 切割字符串为数组
- 截取子串
- 判断某个字符串是否出现在当前字符串中
- 文本匹配-match、(es6)matchAll
- 文本替换-replace、(es6)replaceAll
- (es6)获取某个位置的字符串
- 有关ASCII码的方法
- 获取某字符的ASCII编码
- 比较字符串大小
- 本质
- localeCompare方法
string数据类型
-
数据:使用单引号或双引号引起来的0个或多个字符即为字符串
-
注意问题:
-
单引号内不能再包含单引号,但可以包含双引号
-
双引号内不能再包含双引号,但可以包含单引号
-
原因:在遇到单/双引号时,默认会向后寻找 另一个单/双引号,若是找到默认此字符串结束;
-
eg:
let str='1233'1' // 此时就会报错,原因是因为str字符串到3就结束了
-
创建字符串的三种方式
[1]直接赋值
let a1 = 'aaa' // 数据类型:stirng
[2]String()方法创建字符串(强制类型转化-将不同的数据类型转化为字符串)
let a2 = String('aaa') // 数据类型:string
[3]new String构造函数创建字符串(基本包装对象)
let a3 = new String('aaa')
console.log('数据类型:', typeof a3) // 数据类型:object
检查字符串的方法
通过new String() 获取的对象是引用类型,打印可以看到原型上的所有方法;
当记不住字符串的方法时就可以 在控制台打印 new String()
显示字符串的所有方法
常用的字符串方法
字符串遍历
for...of
是es6新增的遍历方法,可以用来遍历字符串
let str = 'abcdefgh'
for(let i in str){
// i 为索引
console.log(str[i]) // 单个字符串 a b c d e f g h
}
for(let key of str){
// key 为单个zi fu
console.log(key) // 单个字符串 a b c d e f g h
}
切割字符串为数组
-
语法:字符串.
split(分隔符)
-
举例说明
let str = 'ababdbgbdba' let arr1 = str.split('') console.log('arr1',arr1) // ['a', 'b', 'a', 'b', 'd', 'b', 'g', 'b', 'd', 'b', 'a'] let arr2 = str.split('b') console.log('arr2',arr2) // ["a", "a", "d", "g", "d", "a"]
截取子串
-
语法:字符串.
substr(下标,切割个数)
-
举例说明:
let str = 'abcdefghigk' let sonStr = str.substr(1, 5) console.log(sonStr) //bcdef
判断某个字符串是否出现在当前字符串中
判断某个字符串是否出现在当前字符串中方法汇总
文本匹配-match、(es6)matchAll
match方法
文本替换-replace、(es6)replaceAll
replace方法
(es6)获取某个位置的字符串
at()方法是es6新增的查看字符串指定位置字符的方法;
at()
方法接受一个整数作为参数,返回参数指定位置的字符,支持负索引(即倒数的位置)。
如果参数位置超出了字符串范围,at()返回undefined。
const str = 'hello';
console.log(str.at(1)) // "e"
console.log(str.at(-1)) // "o"
console.log(str.at(22)) // undefined
有关ASCII码的方法
获取某字符的ASCII编码
- 语法:str.
charCodeAt(index)
其中index为字符的索引 - 示例
const str1 = 'abcde'; const str2 = 'ABCDE' console.log(str1.charCodeAt(0)) // 97 console.log(str2.charCodeAt(0)) // 65
比较字符串大小
本质
若是操作数中存在number数据类型,则会触发隐士转化 -> 将其他数据类型转化为 number类型再进行比较。
举例说明
console.log('1111' > 2) // true
- 由于2为number数据类型,则会将‘1111’转化为number类型1111再进行比较
字符串比较大小 本质上是将字符串转化为ASCII
码后再进行大小比较。
在比较时 由第一个字符进行比较,若是
- 不相等 -> 得出大小 (此时结束,不会再比较下一个字符)
- 相等 -> 比较下一个字符,以此类推
举例说明
console.log('1111'> '2') // false
- ‘1111’ 的第一个字符为1 -> 转化为ASCII编码后是49,‘2’的第一个字符为2 -> 转化为ASCII编码后是50
- 以上代码相当于比较 49 > 50 // false
localeCompare方法
比较字符串大小可以直接比较也可以使用 localeCompare
方法进行比较
语法
localeCompare 方法是 String原型链上的方法
str.localeCompare(compareString, [locales], [options])
- locales:表示缩写语言代码(BCP 47 language tag)的字符串,或由此类字符串组成的数组 -> 省略默认当地
- options:一个调整输出格式的对象 -> 省略默认以下
- 大于比较字符串 -> 返回1(number)
- 等于比较字符串 -> 返回0(number)
- 小于比较字符串 -> 返回-1(number)
该方法一般配合字符串排序使用