JavaScript通过字符串类型累表示文本。
JavaScript字符串的索引从0开始:第一个字符的位置是0,第二个字符的位置是1,以此类推。
空字符串的长度为0,JavaScript中并没有表示单个字符的"字符型"。
在JavaScript程序中的字符串直接量,是由单引号或双引号括起来的字符序列。由单引号定界的字符串中可以包含双引号,由双引号定界的字符串中也可以包含单引号。:
"" //空字符串,它包含0个字符
'testing' //由单引号定界的字符串
"3.14" //由双引号定界的字符串
'name = "myform"' //由单引号定界的字符串,包含双引号
"user = 'psw'" //由双引号定界的字符串,包含单引号
在JavaScript 3中,字符串直接量必须写在一行中。
而在JavaScript 5中,字符串直接量可以拆分成数行,每行必须以反斜线(\)结束。
反斜线和行结束符都不算是字符串直接量的内容。
如果希望在字符串直接量中另起一行,可以使用转义字符\n:
"two\nlines" //这里定义了一个显示为两行的字符串
"one\ //用三行代码定义了显示为一行的字符串,只在JavaScript 5中有用
long\
line"
需要注意的是,当使用单引号来定界字符串时,需要格外小心英文中的缩写和所有格写法,比如can't和O'Reilly's。因为撇号和单引号是同一个字符,所以必须使用反斜线(\)来转义所有的撇号
在JavaScript字符串中,反斜线(\)有着特殊的用途,反斜线符号后加一个字符,就不在表示他们的字面意思了,比如,\n就是一个转义字符,它表示的是一个换行符
另一个例子是刚才提到的转义字符\',表示单引号(或撇号)。当需要在一个单引号定界的字符串内使用撇号的时候,它就显得非常有用。
JavaScript中的转义字符以及它们所表示的含义:
\o //NUL字符
\b //退格符
\t //水平制表符
\n //换行符
\v //垂直制表符
\f //换页符
\r //回车符
\" //双引号
\' //撇号或单引号
\\ //反斜线
JavaScript的内置功能之一就是字符串连接。
如果将加号(+)运算符用于数字,表示两数相加。
但将它作用域字符串,则表示字符串连接,将第二个字符串拼接在第一个字符串之后:
msg = "hello, " + "world"; //生成字符串"hello, world"
要确定一个字符串的长度—其所包含的16位值的个数—可以使用字符串的length属性:如s.length
除了length属性,字符串还提供许多的可以调用的方法:
var s = "hello, world" //定义一个字符串
s.charAt(0) //=> "h": 第一个字符
s.charAt(s.length - 1) //=> "d": 最后一个字符
s.substring(1,4) //=> "ell": 第2~4个字符
s.slice(1,4) //=> "ell": 同上
s.slice(-3) //=> "rld": 最后三个字符
s.indexOf("l") //=> 2: 字符l首次出现的位置
s.lastIndexOf("l") //=> 10: 字符l最后一次出现的位置
s.indexOf("l",3) //=> 3: 在位置3及之后首次出现字符l的位置
s.split(", ") //=> ["hello", "world"] 分割成子串
s.replace("h", "H") //=> "Hello, world": 全文字符替换
s.toUpperCase() //=> "HELLO, WORLD"
在JavaScript中字符串是固定不变的。
类似replace()和toUpperCase()的方法都返回新的字符串,原字符串本身并没有发生改变。
在JavaScript 5中,字符串可以当做只读数组,除了使用charAt()方法,也可以使用方括号来访问字符串中的单个字符:
s = "hello, world";
s[0] //=> "h"
s[s.length - 1] //=> "d"