# 二.数据分类[String]
# 1.转换
- 转换为字符串:+'' 拼接也可以转换为 string
String(null) // "nul
String(undefined) // "undefined"
11 += ""; // "11" 字符串
1
2
3
2
3
# 2.方法
# 2.1 获取指定字符
for (var i = 0; i < str.length; i++) {
console.log(str.chartAt(i))
}
for (var i = 0; i < str.length; i++) {
console.log(str.charCodetAt(i)) // charCodeAt(索引)获取指定索引位置的字符对应的 ASCII 值
}
1
2
3
4
5
6
2
3
4
5
6
# 2.2 字符串的截取
//substr(n,m),从索引 n 开始截取 m 个字符
//substring(n,m)从索引 n 开发,找到索引 m 处(不包含 m),将找到的字符串返回
//slice(n,m)从索引 n 开始,找到索引 m 处(不包含 m),将找到的字符串返回 slice 支持负数作为索引,str.length+负数索引
//slice(n)没有 m 代表截取到末尾
1
2
3
4
2
3
4
# 2.3 位置查找
- indexOf(字符)获取指定字符在字符串中第一次出现的索引位置
- lastIndexOf(字符):y 获取指定字符在字符串中最后一次出现索引的位置,如果没有这个字符,返回-1,可以判断字符串中是否包含某个字符
string.indexOf("h")
string.lastIndexOf("h")
1
2
2
# 2.4 大小写转换
- toLowerCase:将所有字符转换为小写
- toUpperCase:将所有字符转换为大写
# 2.5 匹配替换
- replace(要替换的老字符,替换成新字符):在不使用正则的情况下每一次调用方法只能替换一次
string.replace("老的", "新的")
string.replace(/老的/g, "新的")
1
2
2
# 2.6 拆分为数组
//splice
var s = "1+2+3+4+5"
console.log(s.split("+"))
console.log(s.split(""))
console.log(s.split(" "))
1
2
3
4
5
2
3
4
5
# 2.7 匹配替换
var time = "2018-02-03 12:03:09" //2018 年 02 月 03 日 12 时 03 分 09 秒
1
思路一
function zero(value) { return value < 10 ? "0" + value : value } function formatTime(timeStr) { var ary = timeStr.split(" ") var str1 = ary[0] var str2 = ary[1] var ary1 = str1.split("-") var ary2 = str2.split(":") return ( ary1[0] + "年" + ary1[1] + "月" + ary1[2] + "日" + ary2[0] + "时" + ary2[1] + "分" + ary2[2] + "秒" ) } console.log(formatTime(time))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25思路二:直接用 replace 一个个替换(没办法补充 0)
思路三:用正则
# 3.类型判断
- 对于原始类型来说,直接用 instanceof 来判断类型是不行的,我们可以改造
class PrimitiveString {
static [Symbol.hasInstance](x) {
return typeof x === "string"
}
}
console.log("hhhh" instanceof PrimitiveString)
1
2
3
4
5
6
2
3
4
5
6
你可能不知道 Symbol.hasInstance 是什么东西,其实就是一个能 让我们自定义 instanceof 行为的东西,以上代码等同于 typeof 'hhh' === 'string',所以结果自然是 true 了
var num = parseFloat("px12.5") //->num=NaN
if (num == 12.5) {
//->NaN==12.5
console.log(12.5)
} else if (num == NaN) {
//->NaN==NaN
console.log(NaN)
} else if (typeof num === "number") {
//typeof NaN="number" ->"number"==="number"
console.log("number")
} else {
console.log("no")
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13