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(‘/:>-|+?’,’/:>-|+?’) ```
