Javascript String
一、概述
1.1 语法
var str = 'text'; // 字面值/直接量 var str = new String('text'); // 对象 var str = String('text'); // 类型转换函数
1.2 下标图示
i am a string 0123456789111 012 -------------(负) 1111987654321 3210
二、静态方法
// 将指定的 Unicode 值序列转换字符串 String.fromCharCode(num1[, ...[, numN]])
三、实例对象
3.1 属性
// 字符串长度 String.prototype.length
3.2 方法
3.2.1 提取
// 提取返回字符串片断 // [beginSlice, endSlice), 缺省 endSlice 则 [beginSlice, END] // 支持负数下标 String.prototype.slice(beginSlice[, endSlice]) // 提取返回字符串片断 // [indexStart, indexEnd), substring(start, end) == str.substring(end, start), 缺省 indexEnd 则 [indexStart, END] // 不支持负数下标, 负数会被当做 0 String.prototype.substring(indexStart[, indexEnd]) // 从 start 开始提取长度为 length(如果有这么多的话) 的字符串 // length 负数会被当做 0, 缺省 length 则 [start, END] // 支持负数下标 String.prototype.substr(start [, length]) // 以 separator(可以是 regexp) 为分割字符返回包含 limit(如果有这么多的话) 个元素的字符串数组 String.prototype.split([separator[, limit]]) // 返回在指定位置 index 的字符, 缺省 index 则返回 charAt(0) // 不支持负数下标 String.prototype.charAt(index) // 返回在指定位置 index 的字符 UTF-16 编码, 缺省 index 则返回 charCodeAt(0) // 不支持负数下标 String.prototype.charCodeAt(index)
3.2.2 匹配替换
// 从 fromIndex 下标(包含)开始匹配 searchValue, 返回首次匹配的下标, 无匹配则返回 -1 // fromIndex 默认为 0, fromIndex <= 0 => fromIndex = 0, fromIndex >= str.length => 不进行匹配并返回 -1 String.prototype.indexOf(searchValue[, fromIndex]) // 反向匹配 searchValue, 返回首次匹配的下标, 无匹配则返回 -1 // fromIndex 默认为 +Infinity, romIndex <= 0 => romIndex = 0, fromIndex >= str.length => fromIndex = +Infinity String.prototype.lastIndexOf(searchValue[, fromIndex]) fromIndex | v 0123456789 'abcabcabc'.lastIndexOf('ca', 5) ca <-- 匹配1, 成功则返回下标并不再进行匹配 ca <-- 匹配2 ca <-- 匹配3 ca <-- 匹配4 ca <-- 匹配5 ca <-- 匹配6 // 匹配正则表达式 regexp, 成功则返回首次匹配的下标, 否则返回 -1 String.prototype.search(regexp) // 匹配正则表达式 regexp, 没有匹配返回 null // regexp 带 g 修饰符, 匹配则返回包含所有匹配字符串的数组 // regexp 不带 g 修饰符, 匹配则返回包含匹配字符串([0]), 匹配字符串下标(['index']), 匹配源字符串(['input'])的数组 String.prototype.match(regexp) // 字符串替换, 比较强大, 具体使用翻文档 String.prototype.replace(regexp|substr, newSubStr|func)
3.2.3 拼接弃空
// 拼接一个或多个字符串 String.prototype.concat(str1[, ...[, strN]]) // 去除字符串两边的空白 String.prototype.trim()
3.2.4 大小写转换
String.prototype.toUpperCase() // 转换为大写 String.prototype.toLowerCase() // 转换为小写
四、其他
4.1 字面值多行写法
// 写法一 var str = 'he\ llo \ world!'; // 写法二, 推荐用法 var str = 'he' + 'llo' + 'world!';
4.2 包装对象/临时对象
var str = 'hello world!'; var subStr = str.substring(str.indexOf(' ')+1, str.length);
这里 str 并不是字符串对象, 却可以引用字符串对象的属性. 原因在于当引用字符串 str 的属性时, javascript 引擎就会通过调用 new String(str) 的方式创建一个临时对象, 这样通过此临时对象便可以引用字符串属性了. 当引用结束后, 这个临时对象会被销毁.