源链接:https://wangdoc.com/javascript/index.html
借鉴:
字符串
字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。需要注意的就是下面的转义一级编码方面的问题。
\0 :null(\u0000)
\b :后退键(\u0008)
\f :换页符(\u000C)
\n :换行符(\u000A)
\r :回车键(\u000D)
\t :制表符(\u0009)
\v :垂直制表符(\u000B)
\' :单引号(\u0027)
\" :双引号(\u0022)
\\ :反斜杠(\u005C)
JS采用Unicode编码即\uxxxx
的格式,任何符合Unicode格式输出时都会以对于字符显示。
另外字符串有类似数组的特质,可以通过index之间从字符串中定位字符,但是不可以用这种方式对字符进行修改。
var s = 'hello';
delete s[0];
s // "hello"
s[1] = 'a';
s // "hello"
s[5] = '!';
s // "hello"
没什么好说的,大部分特殊情况也都不常用,对开发没什么影响,感觉还是总结一下字符串这块的相关方法比较有用
属性
-
constructor 对创建该对象的函数的引用,可用于判断类型
var a = 'asdf' a.constructor === String // true
-
length 字符串长度
a.length = 4
-
prototype 允许您向对象添加属性和方法(原型这块没研究透,研究透了再说)
String.prototype.asdf = 111 a.asdf // 111
常用方法
-
返回指定位置的字符:
charAt() var a = 'asdfg' a.charAt(3) // 'f'
-
检索指定字符串在被检索字符串中的位置
indexOf() // 检索首次出现 lastIndexOf() // 检索最后一次出现 var a ='asdfasdf' a.indexOf('df') // 2 a.lastIndexOf('df') // 6 a.IndexOf('df') // -1 未检索到字符串返回-1 a.lastIndexOf('sf') // -1 未检索到字符串返回-1
-
正则匹配字符串
match() // 返回具体内容 search() // 返回匹配位置 var a = 'asdf qwer zxcv' a.match(/\w+/g) // ["asdf", "qwer", "zxcv"] a.match(/aaa/g) // null a.search(/qwer/) // 5 a.search(/qwsr/) // -1
字符串的正则匹配要注意一点,那就是JS不支持负向零宽断言,只支持正向零宽断言。即不支持(?<…),支持(?!..)。
-
替换字符串
replace() // 替换 var a = 'aaa213hrf' a.replace(/\d+/, 'number') // "aaanumberhrf" 将数字替换成'number' name = "Doe, John"; name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");
-
提取字符串片段,但不影响原字符串
slice(start,end) a = 'asdfghjkl' a.slice(1, 5) // "sdfg" a.slice(1, -3) // "sdfgh"
-
将字符串分割为数组(不影响原字符串) 与 将数组组合为字符串
split(separator,howmany) a = 'aaa bbb ccc' a.split(' ') // ["aaa", "bbb", "ccc"] a.split(' ', 2) // ["aaa", "bbb"] ["aaa", "bbb", "ccc"].join(',') // "aaa,bbb,ccc"