目录
1、indexOf(subStr, [startPos]) 查找子串位置
lastIndexOf(subStr, [startPos]) 反向查找子串位置
2、search(regex|subStr) 正则搜索,返回位置
3、slice(startPos[, endPos]) 、substring(同前)、substr(startPos[, length]) 截取子串
4、replace(regex|subStr, anotherSubStr) 正则替换子串
5、toUpperCase()、toLowerCase() 大小写转换
6、concat(str1[, str2, ...]) 连接字符串
8、charAt(pos)、charCodeAt(pos) 提取字符
一、字符串基础
1、格式写法
JavaScript 字符串是引号中的零个或多个字符。示例如下:
var answer = "It's good to see you again!";
var answer = "He is called 'Bill'";
var answer = 'He is called "Bill"';
var x = "中国是瓷器的故乡,因此 china 与\"China(中国)\"同名。"
特殊字符
代码 | 结果 | 描述 |
---|---|---|
\' | ' | 单引号 |
\" | " | 双引号 |
\\ | \ | 反斜杠 |
\b | 退格键 | |
\f | 换页 | 换页 |
\n | 新行 | 新行 |
\r | 回车 | 回车 |
\t | 水平制表符 | 水平制表符 |
\v | 垂直制表符 | 垂直制表符 |
长代码行换行
document.getElementById("demo").innerHTML = "Hello \
Kitty!"; //某些浏览器也不允许 \ 字符之后的空格
document.getElementById("demo").innerHTML = "Hello" +
"Kitty!"; //更靠谱的做法
字符串对象
之前,是通过字面方式创建字符串原始值,也可以new Sting("...")创建字符串对象。
请不要把字符串创建为对象,它会拖慢执行速度。new 关键字使代码复杂化。也可能产生一些意想不到的结果:
var x = "Bill";
var y = new String("Bill");
// typeof x 将返回 string
// typeof y 将返回 object
// (x == y) 为 true,因为 x 和 y 的值相等
// (x === y) 为 false,因为 x 和 y 的类型不同(字符串与对象)
var x = new String("Bill");
var y = new String("Bill");
// (x == y) 为 false,因为 x 和 y 是不同的对象
2、字符串长度
var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var sz = txt.length; // 26
二、字符串方法
1、indexOf(subStr, [startPos]) 查找子串位置
var str = "The full name of China is the People's Republic of China.";
var pos = str.indexOf("China"); // 17
lastIndexOf(subStr, [startPos]) 反向查找子串位置
var str = "The full name of China is the People's Republic of China.";
var pos = str.lastIndexOf("China"); // 51 方法返回指定文本在字符串中最后一次出现的索引:
如果未找到文本, indexOf() 和 lastIndexOf() 均返回 -1。
2、search(regex|subStr) 正则搜索,返回位置
var str="Mr. Blue has a blue house";
subStr1 = str.search("blue"); // 15
subStr2 = str.search(/blue/i); // 4
3、slice(startPos[, endPos]) 、substring(同前)、substr(startPos[, length]) 截取子串
var str = "Apple, Banana, Mango";
var sub1 = str.slice(7,13); //"Banana"
var sub2 = str.slice(-13,-7); //"Banana"
var left1 = str.slice(7); //"Banana, Mango"
var left1 = str.slice(-13); //"Banana, Mango"
//提示:负值位置不适用 Internet Explorer 8 及其更早版本
/* substring() 类似于 slice()
不同之处在于 substring() 无法接受负的索引
substr() 类似于 slice()
不同之处在于 第二个参数规定被提取部分的长度
如果省略第二个参数,则该 substr() 将裁剪字符串的剩余部分
如果首个参数为负,则从字符串的结尾计算位置。
*/
var res1 = str.substr(7); //"Banana, Mango"
var res2 = str.substr(-5); //"Mango"
4、replace(regex|subStr, anotherSubStr) 正则替换子串
var str = "Please visit Microsoft and Microsoft!";
var n = str.replace("Microsoft", "W3School"); //"Please visit W3School and Microsoft!" 默认只替换第一个
str = "Please visit Microsoft!";
var n = str.replace("MICROSOFT", "W3School"); //"Please visit Microsoft!" 默认大小写敏感
str = "Please visit Microsoft!";
var n = str.replace(/MICROSOFT/i, "W3School"); //"Please visit W3School!" 大小写不敏感
str = "Please visit Microsoft and Microsoft!";
var n = str.replace(/Microsoft/g, "W3School"); //"Please visit W3School and W3School!" 替换所有
5、toUpperCase()、toLowerCase() 大小写转换
var text1 = "Hello World!"; // 字符串
text2 = text1.toUpperCase(); // "HELLO WORLD!"
text3 = text1.toLowerCase(); // "hello world!"
6、concat(str1[, str2, ...]) 连接字符串
var text = "Hello" + " " + "World!";
var text = "Hello".concat(" ","World!"); //两者等效
7、trim() 清除两头空格
/*警告:Internet Explorer 8 或更低版本不支持 trim() 方法。*/
var str = " Hello World! ";
alert(str.trim());
/*如需支持 IE 8,您可搭配正则表达式使用 replace() 方法代替:*/
var str = " Hello World! ";
alert(str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''));
/* 您还可以使用上面的 replace 方案把 trim 函数添加到 JavaScript String.prototype:*/
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
var str = " Hello World! ";
alert(str.trim());
8、charAt(pos)、charCodeAt(pos) 提取字符
var str = "HELLO WORLD";
str.charAt(0); // 返回 H
str.charCodeAt(0); // 返回 72 字符 H 的 unicode 编码
使用下标 [ ] 访问
- 不适用 Internet Explorer 7 或更早的版本
- 它让字符串看起来像是数组(其实并不是)
- 如果找不到字符,[ ] 返回 undefined,而 charAt() 返回空字符串
- 它是只读的。str[0] = "A" 不会产生错误(但也不会工作!)
var str = "HELLO WORLD";
str[0]; // 返回 H
str[0] = "A"; // 不产生错误,但不会工作
typeof str[100] == 'undefined'; // true
str.charAt(100) == ''; // true
9、转换为数组
var txt = "a,b,c,d,e"; // 字符串
txt.split(","); // 用逗号分隔 ["a", "b", "c", "d", "e"]
var txt = "a b c d e"; // 字符串
txt.split(" "); // 用空格分隔 ["a", "b", "c", "d", "e"]
var txt = "a|b|c|d|e"; // 字符串
txt.split("|"); // 用竖线分隔 ["a", "b", "c", "d", "e"]
txt.split(""); // 分隔为字符 ["a", ",", "b", ",", "c", ",", "d", ",", "e"]
txt.split(); // 分隔失败 ["a,b,c,d,e"]