String 全局对象是一个用于字符串或一个字符序列的构造函数。

语法

  1. 'string'
  2. String(thing)
  3. new String(thing)
  4. // thing为任何可以转换成字符串的值
  5. `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不区分单引号和双引号

长字符串

使用 + 运算符

  1. let longString="long"+
  2. "long"

在末尾使用 “\”(后面不要有除换行符以外的字符)

  1. let longString="This is a very long string\
  2. 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的别名。某些引擎中

  1. 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来进行大小写转换。
  • 观察二进制表示,发现二进制表示中,只有第六位是不同的,所以可以通过异或(^) 来直接转换大小写
    1. function upLowTranform(str) {
    2. if (!str) {
    3. return ""
    4. }
    5. return String.fromCharCode(str.charCodeAt(0) ^ 32)
    6. }

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