JavaScript 字符串方法
-
JavaScript字符串方法
字符串方法可以帮助您使用字符串。比如说截取字符串,获取字符串长度,大小写转换,获取字符串中字符的位置等。原始值,如“John Doe”,不能具有属性或方法(因为它们不是对象)。但是使用JavaScript,方法和属性也可用于原始值,因为JavaScript在执行方法和属性时将原始值视为对象。 -
-
在字符串中查找字符串的位置
indexOf()方法返回字符串中指定文本第一次出现的索引(位置):
尝试一下var str = "Please locate where 'locate' occurs!"; var pos = str.indexOf("locate");
JavaScript从0开始计算索引。0是字符串中的第一个位置,1是第二个,2是第三个......
lastIndexOf()方法返回字符串中最后一次出现的指定文本的索引:
尝试一下var str = "Please locate where 'locate' occurs!"; var pos = str.lastIndexOf("locate");
indexOf(),lastIndexOf()两者都是如果找不到文本则返回-1。
尝试一下var str = "Please locate where 'locate' occurs!"; var pos = str.lastIndexOf("John");
两种方法都接受第二个参数作为搜索的起始位置:
尝试一下var str = "Please locate where 'locate' occurs!"; var pos = str.indexOf("locate",15);
-
-
提取字符串部分
提取字符串的一部分有3种方法:- slice(start, end)
- substring(start, end)
- substr(start, length)
slice()方法提取字符串的一部分并将提取的部分返回到新字符串中。该方法需要2个参数:起始位置和结束位置(获取的字符串不包括结束位置的字符)。此示例将字符串的一部分从位置7切割到位置12(13-1):
尝试一下var str = "Apple, Banana, Kiwi"; var res = str.slice(7, 13);
请记住:JavaScript从零开始计算索引。第一个位置是0。
如果参数为负,则从字符串的末尾开始计算位置。此示例将字符串的一部分从位置-12切换到位置-6:
尝试一下var str = "Apple, Banana, Kiwi"; var res = str.slice(-12, -6);
如果省略第二个参数,该方法将切出字符串的其余部分:
尝试一下var res = str.slice(7);
或者,从最后算起:
尝试一下var res = str.slice(-12);
数负位置在Internet Explorer 8及更早版本中不起作用。
substring()类似于slice()。不同的是,substring()不能接受负数参数。
尝试一下var str = "Apple, Banana, Kiwi"; var res = str.substring(7, 13);
substr()类似于slice()。不同之处在于第二个参数指定了提取部分的长度。
尝试一下var str = "Apple, Banana, Kiwi"; var res = str.substr(7, 6);
如果省略第二个参数,substr()将切掉字符串的其余部分。
尝试一下var str = "Apple, Banana, Kiwi"; var res = str.substr(7);
如果第一个参数是负数,则位置从字符串的末尾开始计数。
尝试一下var str = "Apple, Banana, Kiwi"; var res = str.substr(-4);
-
替换字符串内容
replace()方法用指定的值替换字符串中的部分:
尝试一下str = "Please visit Microsoft!"; var n = str.replace("Microsoft", "CAINIAOYA");
replace()方法不会更改调用它的字符串。它返回一个新字符串。
默认情况下,replace()函数仅替换第一个匹配:
尝试一下str = "Please visit Microsoft and Microsoft!"; var n = str.replace("Microsoft", "CAINIAOYA");
默认情况下,该replace()功能区分大小写。编写MICROSOFT(带大写)不起作用:
尝试一下str = "Please visit Microsoft!"; var n = str.replace("MICROSOFT", "CAINIAOYA");
要替换不区分大小写,请使用带有/i标志的正则表达式忽略大小写:
尝试一下str = "Please visit Microsoft!"; var n = str.replace(/MICROSOFT/i, "CAINIAOYA");
请注意,正则表达式没有引号。
要替换所有匹配项,请使用带有/g标志的正则表达式(全局匹配):
尝试一下str = "Please visit Microsoft and Microsoft!"; var n = str.replace(/Microsoft/g, "CAINIAOYA");
您将在后面章节中学到更多关于正则表达式的知识。
-
转换为大写和小写
toUpperCase()方法将字符串转换为大写:
尝试一下var text1 = "Hello World!"; // String var text2 = text1.toUpperCase(); // text2 是 text1 的大写
toLowerCase()方法将字符串转换为小写:
尝试一下var text1 = "Hello World!"; // String var text2 = text1.toLowerCase(); // text2是text1小写
-
-
删除字符串两旁空格
trim()方法从字符串的两边删除空格:
尝试一下var str = " Hello World! "; alert(str.trim());
Internet Explorer 8或更低版本不支持trim()方法。
如果您需要支持IE 8,则可以使用replace()正则表达式:
尝试一下var str = " Hello World! "; alert(str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''));
您还可以使用上面的替换解决方案向JavaScript添加trim函数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());
-
提取字符串字符
提取字符串字符有3种方法:- charAt(position)
- charCodeAt(position)
- 属性访问[]
charAt()方法返回字符串中指定索引(位置)的字符:
尝试一下var str = "HELLO WORLD"; str.charAt(0); // 返回 H
charCodeAt()方法返回字符串中指定索引处的字符的unicode:方法返回UTF-16代码(0到65535之间的整数)。
尝试一下var str = "HELLO WORLD"; str.charCodeAt(0); // 返回 72
ECMAScript 5(2009)允许对字符串进行属性访问[]:
尝试一下var str = "HELLO WORLD"; str[0]; // 返回 H
属性访问可能有点不可预测:
- 它在Internet Explorer 7或更早版本中不起作用
- 它使字符串看起来像数组(但它们不是)
- 如果未找到任何字符,则[]返回undefined,而charAt()返回空字符串。
- 它是只读的。str[0]=“A”没有错误(但不起作用!)
尝试一下var str = "HELLO WORLD"; str[0] = "A"; // 没有错误,但不起作用 str[0]; // 返回 H
如果要将字符串作为数组使用,可以将其转换为数组。
可以使用split()方法将字符串转换为数组:
尝试一下var txt = "a,b,c,d,e"; // String txt.split(","); // 用逗号分隔 txt.split(" "); // 用空格分隔 txt.split("|"); // 用竖线分隔
如果省略分隔符,则返回的数组将包含index[0]中的整个字符串。如果分隔符是“”,则返回的数组将是单个字符的数组:
尝试一下var txt = "Hello"; // String txt.split(""); // 用空字符串分隔
有关完整字符串参考,请转到我们的完整JavaScript字符串参考。该参考包含所有字符串属性和方法的描述和示例。