String 全局对象是一个用于字符串或一个字符序列的构造函数。
语法
'string'
String(thing)
new String(thing)
// thing为任何可以转换成字符串的值
`i love ${what}` // es6模板字面量
转义字符
Code | Output |
---|---|
\0 | 空字符 |
\` | 单引号 |
\“ | 双引号 |
\ | 反斜杠 |
\n | 换行 |
\r | 回车 |
\v | 垂直制表符 |
\t | 水平制表符 |
\b | 退格 |
\f | 换页 |
\uXXX | unicode码 |
\u{X} … \u{XXXXXX} | unicode codepoint (lab) |
\xXX | Latin-1 字符(x小写) |
javaScript不区分单引号和双引号
长字符串
使用 + 运算符
let longString="long"+
"long"
在末尾使用 “\”(后面不要有除换行符以外的字符)
let longString="This is a very long string\
this is a very long string"
基本字符穿和字符穿对象的区别(Boolean和Number也如此)
基本字符穿:直接使用引号定义,或者调用String方法
只有字符串对象可以调用字符串方法。基本字符穿调用方法,JavaScript会自动将其转化为字符串对象,并且调用相应的方法或执行查询。
注意: eval将基本字符串作为源代码处理,字符穿对象会被当做对象处理。
利用valueOf
方法将字符串对象转为字符串
属性
String.prototype
方法
String.fromCharCode()
String.fromCodePoint()
(lab)
String.raw()
(lab)
String实例属性
String.prototype.constructor
: 用于创造对象的原型对象的特定的函数
String.prototype.length
N
: N是小于length
和0之间的正整数,只读
String实例的方法(31个)
String.prototype.charAt()
:返回特定位置字符
String.prototype.charCodeAt()
:返回表示指定索引的字符的Unicode的值
String.prototype.codePointAt()
:返回使用utf-16编码的给定位置的值的非负整数
String.prototype.concatt()
:连接两个字符穿文本并返回一个新的字符串。
String.prototype.includes()
:判断一个字符穿是否包含其他字符串
String.prototype.endWith()
:判断字符串是否以给定的字符串结尾
String.prototype.indexOf()
:返回首个被发现的给定值的索引值,默认-1
String.prototype.lastIndexOf()
最后一个,默认-1
String.prototype.localeCompare()
String.prototype.match()
String.prototype.normalize()
String.prototype.padEnd()
String.prototype.padStart()
String.prototype.repeat()
String.prototype.replace()
String.prototype.search()
String.prototype.slice()
String.prototype.split()
String.prototype.startsWith()
String.prototype.substr()
String.prototype.substring()
String.prototype.toLocaleLowerCase()
String.prototype.toLocalUpperCase()
String.prototype.toLowerCase()
String.prototype.toString()
String.prototype.toUpperCase()
String.prototype.trim()
String.prototype.trimStart()
String.prototype.trimEnd()
String.prototype.valueOf()
String.prototype[@@iterator]()
不推荐 (4个)
String.prototype.quote()
【已废弃】
String.prototype.toSource()
【未标准】
String.prototype.trimLeft()
【未标准】
String.prototype.trimRight()
【未标准】标准方法名为 trimStart,兼容性原因,trimRight是trimEnd的别名。某些引擎中
String.prototype.trimLeft.name === "trimStart";
限制使用,只对于HTML标签和属性提供部分支持(2个)
String.prototype.anchor()
String.prototype.link()
已从标准删除 (10个)
String.prototype.big()
String.prototype.blink()
String.prototype.bold()
String.prototype.fixed()
String.prototype.fontcolor()
String.prototype.fontsize()
String.prototype.italics()
String.prototype.small()
String.prototype.sub()
String.prototype.sup()
常用:31个与DOM无关的方法,2个与DOM有关的方法
示例
大小写转换
通过位运算
大写 | 十六进制 | 二进制 | 小写 | 十六进制 | 二进制 |
---|---|---|---|---|---|
A | 41 | 01000001 | a | 61 | 01100001 |
B | 42 | 01000010 | b | 62 | 01100010 |
C | 43 | 01000011 | c | 63 | 01100011 |
D | 44 | 01000100 | d | 64 | 01100100 |
E | 45 | 01000101 | e | 65 | 01100101 |
F | 46 | 01000110 | f | 66 | 01100110 |
- 字母大小写的ASCII码相差32,所以可以通过增加或者减少32来进行大小写转换。
- 观察二进制表示,发现二进制表示中,只有第六位是不同的,所以可以通过异或(^) 来直接转换大小写
function upLowTranform(str) {
if (!str) {
return ""
}
return String.fromCharCode(str.charCodeAt(0) ^ 32)
}
String的方法
indexOf
``javascript function indexOf (a,b){ var reg=new RegExp(
${b}`,’gi’); var c=reg.exec(a); console.log(c?c.index:-1) }
var a=’abcdefghijk’ var b=’ghi’
indexOf(‘/:>-|+?’,’/:>-|+?’) ```