JavaScript权威指南(第6版) --- 自学笔记(6)--- 文本、字符串直接量

文本
字符串是一组由16位值组成的不可变的有序序列,每个字符通常来自于Unicode字符集。js通过字符串表示文本。
字符串的长度(length)是其所含16位值得个数,字符串的索引从0开始。
js中没有表示单个字符的字符型,要表示单个字符,只需将一个16位值赋值给字符串变量即可,该字符串变量长度为1。

字符串直接量
由单引号或者双引号括起来的字符串。以下示例都是字符串直接量。

""; // 表示空字符串,包含0个字符
"testing";
"3.14";
'name="xiaoming"';
"hello world, I love JS";
"one line \n tow line"; // \n是转义字符,换行
其中,在ECMAScript 3中,字符串直接量必须写在一行;而在ECMAScript 5中,字符串直接量可以拆分多行,每行必须以反斜线(\)结束,并且反斜线和行结束符不算是字符串直接量的内容。

ECMAScript 5中换行可写为:
"one line\
tow line\
three line"
在开发过程中,如果遇到,请按照团队的规范写。

转义字符
在js中,反斜线(\)有着特殊用途,它后面加一个字母,可能就不表示它们的字面含义了。
下面我们列举一些:

 "\0"          \u0000    NUL字符
"\b"           \u0008    退格符
"\t"            \u0009    水平制表符
"\n"           \u000A    换行符
"\v"           \u000B    垂直制表符
"\f"            \u000C    换页符
"\r"            \u000D    回车符
"\""            \u0022    双引号
"\'"             \u0027    撇号或者单引号
"\\"             \u005C    反斜线
"\xXX"       由2位十六进制数XX指定的Latin-1字符
"\uXXXX"  由4位十六进制数XXXX指定的Unicode字符
如果"\"和后面的字符,不能组合成转义符时,则忽略"\",例如,"\#"与"#"等价 (console.log("\#" == "#"); // true)。

字符串使用
js的内置功能之一就是字符串连接。
加号("+")运算符,用于数字时,表示两数相加;用于字符串时,则表示字符串拼接,将"+"后面的字符串拼接在前面的字符串之后。

console.log("hello " + "world");  // hello world

js提供了很多字符串可以调用的方法,具体参考: http://www.w3school.com.cn/jsref/jsref_obj_string.asp

// 如果无特殊说明,字符下标都是从0开始。
var str = "hello world";
console.log(str.length); // 11,获取字符串长度
console.log(str.charAt(0)); // h,获取字符串第一个字符
console.log(str.charAt(str.length - 1)); // d,获取字符串最后一个字符
console.log(str.substring(1, 4)); // ell,截取字符串中第2位到第4位的字符串。index从0开始,不包含最后一位
console.log(str.slice(2, 5)); // llo,截取字符串中第3位到第5位的字符串。index从0开始,不包含最后一位
console.log(str.slice(-4)); // orld,截取字符串后4位
console.log(str.indexOf("l")); // 2,"l"字符首次出现的位置
console.log(str.lastIndexOf("l")); // 9,"l"字符最后一次出现的位置
console.log(str.indexOf("l", 3)); // 3,"l"字符在位置3以及之后首次出现的位置,(包含指定的开始位置)
console.log(str.split(" ")); // ["hello", "world"],用空格分隔字符串
console.log(str.replace("l" , "L")); // heLlo world,一定注意,js提供的replace方法,只会替换第一个匹配的字符串
console.log(str.toUpperCase()); // HELLO WORLD

注意,js中字符串时固定不变的,类似 replace()和toUpperCase()方法都返回了新的字符串,而不是改变原来的字符串。
在ECMAScript 5中,字符串可以被当做只读数组处理,这样也可以通过下标来获取某个字符。

// 字符串被作为只读数字处理
var str = "hello world";
console.log(str[0]);
console.log(str.charAt(0) == str[0]);

PS:
上面说到了js的 replace()只替换字符串中第一个匹配的字符串,如果想要全部替换,有很多种写法,下面我写一种,使用原型链方式的。

String.prototype.replaceAll = function(searchVal, repalceVal) {
    return this.replace(new RegExp(searchVal, "gm"), repalceVal);
}

console.log("hello world".replaceAll("l" , "L")); // heLLo worLd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值