JavaScript 字符串由 '' 或 "" 括起来的字符表示。
如果'本身也是一个字符,则可以用“”括起来,例如“ImOK”中包含的字符是I、'、m、空格、O、K这6个字符。
如果字符串中同时包含'和"怎么办?可以用通配符来标记,例如:
'I'm "OK"!';
所表达的字符串内容为:我“OK”!
通配符可以是通配符javascript字符串比较,例如n表示换行符,t表示制表符javascript字符串比较,字符本身也需要通配符,所以\表示的字符是。
ASCII字符可以用x##的十六进制补码来表示,例如:
'x41'; // 完全等同于 'A'
您还可以使用 u#### 来表示 Unicode 字符:
'u4e2du6587'; // 完全等同于 '中文'
多行字符串
因为用n写多行字符串比较麻烦,所以最新的ES6标准增加了一种新的多行字符串的表示方式,用后冒号`...`表示:
`这是一个
多行
字符串`;
注意:后冒号位于鼠标 ESC 的下方,数字键 1 的右侧:
┌─────┐ ┌─────┬─────┬─────┬─────┐
│ ESC │ │ F1 │ F2 │ F3 │ F4 │
│ │ │ │ │ │ │
└─────┘ └─────┴─────┴─────┴─────┘
┌─────┬─────┬─────┬─────┬─────┐
│ ~ │ ! │ @ │ # │ $ │
│ ` │ 1 │ 2 │ 3 │ 4 │
├─────┴──┬──┴──┬──┴──┬──┴──┬──┘
│ │ │ │ │
│ tab │ Q │ W │ E │
├────────┴──┬──┴──┬──┴──┬──┘
│ │ │ │
│ caps lock │ A │ S │
└───────────┴─────┴─────┘
练习:测试您的浏览器是否支持 ES6 标准。 如果不是,请用n重新表示多行字符串:
// 如果浏览器不支持ES6,将报SyntaxError错误:
----
console.log(`多行
字符串
测试`);
模板字符串
要连接多个字符串,可以使用+号来连接:
var name = '小明';
var age = 20;
var message = '你好, ' + name + ', 你今年' + age + '岁了!';
alert(message);
如果需要连接的变量较多,使用+号就比较麻烦。 ES6新增了模板字符串,其表达方式与之前的多行字符串相同,并且会手动替换字符串中的变量:
var name = '小明';
var age = 20;
var message = `你好, ${name}, 你今年${age}岁了!`;
alert(message);
练习:测试您的浏览器是否支持 ES6 模板字符串。 如果不是,请将模板字符串改为+连接的普通字符串:
'use strict';
// 如果浏览器支持模板字符串,将会替换字符串内部的变量:
var name = '小明';
var age = 20;
----
console.log(`你好, ${name}, 你今年${age}岁了!`);
操作字符串
字符串的常见操作如下:
var s = 'Hello, world!';
s.length; // 13
获取字符串中指定位置的字符,使用类似于Array的下标操作,索引冒号从0开始:
var s = 'Hello, world!';
s[0]; // 'H'
s[6]; // ' '
s[7]; // 'w'
s[12]; // '!'
s[13]; // undefined 超出范围的索引不会报错,但一律返回undefined
需要注意的是,字符串是不可变的,如果字符串的索引参数没有错误,则没有任何效果:
var s = 'Test';
s[0] = 'X';
alert(s); // s仍然为'Test'
JavaScript 为字符串提供了一些常用的方法。 请注意,调用这些方法不会更改原始字符串的内容,而是返回一个新字符串:
改为大写
toUpperCase() 将字符串转换为全部小写:
var s = 'Hello';
s.toUpperCase(); // 返回'HELLO'
转为小写
toLowerCase() 将字符串转换为全部大写:
var s = 'Hello';
var lower = s.toLowerCase(); // 返回'hello'并赋值给变量lower
lower; // 'hello'
指数
indexOf() 搜索指定字符串的出现次数:
var s = 'hello, world';
s.indexOf('world'); // 返回7
s.indexOf('World'); // 没有找到指定的子串,返回-1
子串
substring() 返回指定索引范围的子字符串:
var s = 'hello, world'
s.substring(0, 5); // 从索引0开始到5(不包括5),返回'hello'
s.substring(7); // 从索引7开始到结束,返回'world'