二十五岁时我们都一样愚蠢、多愁善感,喜欢故弄玄虚,可如果不那样的话,五十岁时也就不会如此明智。
标题:JavaScript字符串方法
字符串的方法和属性
原始值, 像 "John Doe", 不能拥有属性或方法 (因为它们不是对象).
但对于JavaScript,方法和属性也能应用于原始值,因为执行方法和属性时,JavaScript将原始值作为对象对待。
字符串长度
length属性返回字符串的长度:
var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var sln = txt.length;
在字符串中查找字符串
The indexOf() 方法返回字符串中指定文本第一次出现的位置的索引:
var str = "Please locate where 'locate' occurs!"; var pos = str.indexOf("locate");lastIndexOf() 方法返回字符串中指定文本的最后一次出现的索引:
var str = "Please locate where 'locate' occurs!"; var pos = str.lastIndexOf("locate");indexOf()和lastIndexOf() 方法都返回-1,如果文本没有找到.
JavaScript的位置从零计数。0是一个字符串中的第一个位置,1个是第二个,2个是第三个 ...
这两种方法都接受第二个参数作为搜索的起始位置.
在字符串中搜索字符串
search() 方法搜索指定值的字符串并返回匹配的位置:
var str = "Please locate where 'locate' occurs!"; var pos = str.search("locate");
你注意到没有?
两个方法, indexOf() 和 search(), 是等价的.
它们接受相同的参数,并且返回相同的值.
两个方法是等价的,但是search()方法搜索值更强大。
关于正则表达式一章中,您将了解更多关于强搜索值的知识
提取部分字符串
有3种方法提取字符串的一部分:
- slice(start, end)
- substring(start, end)
- substr(start, length)
slice() 方法
slice() 提取字符串的一部分,并在一个新的字符串中返回提取的部分
该方法带2个参数:起始索引(位置)和结束索引(位置)。.
此示例将从位置7到13,提取字符串的一部分:
var str = "Apple, Banana, Kiwi"; var res = str.slice(7, 13);如果参数为负数,则从字符串的末端计算该位置.
这个实例从位置-12到-6提取字符串的一部分:
var str = "Apple, Banana, Kiwi"; var res = str.slice(-12, -6);如果省略第二个参数,则该方法将提取字符串的剩余部分:
var res = str.slice(7);或者,从末端计数:
var res = str.slice(-12);负数位置不能在IE8和更早的版本工作.
substring() 方法
substring()和slice()相似.
不同的是substring()不能接受负索引.
var str = "Apple, Banana, Kiwi"; var res = str.substring(7, 13);如果省略第二个参数, substring() 提取剩余的字符串.
substr() 方法
substr() 和 slice()相似.
所不同的是,第二个参数指定提取部分的长度.
var str = "Apple, Banana, Kiwi"; var res = str.substr(7, 6);如果第一个参数为负数,则该位置从字符串的末端计数.
第二个参数不能为负值,因为它定义了长度.
如果省略第二个参数 substr() 提取字符串的剩余部分。
替换字符串内容
replace() 方法用指定值替换另一个值:
var str = document.getElementById("demo").innerHTML; var txt = str.replace("编程字典","www.codingdict.com");replace() 方法还可以将正则表达式作为搜索值.
默认情况下,该replace()函数代替只有第一个匹配。若要替换所有匹配,请使用带有G标志的正则表达式(全局匹配):
var str = document.getElementById("demo").innerHTML; var txt = str.replace(/编程字典/g,"www.codingdict.com");replace()方法不会改变被调用的字符串。它返回一个新的字符串
大小写转换
使用toUpperCase(),可以将字符串被转换为大写 :
var text1 = "Hello World!"; // String var text2 = text1.toUpperCase(); // text2 is text1 converted to upper可以使用toLowerCase()方法,将字符串转换为小写:
var text1 = "Hello World!"; // String var text2 = text1.toLowerCase(); // text2 is text1 converted to lower
concat() 方法
concat() 连接两个或多个字符串:
var text1 = "Hello"; var text2 = "World"; text3 = text1.concat(" ", text2);concat() 方法可以代替加号运算符. 这两行做法是相同的:
var text = "Hello" + " " + "World!"; var text = "Hello".concat(" ", "World!");所有字符串方法返回新字符串。他们不修改原来的字符串。也就是说:字符串是不可变的:字符串不能更改,只能替换.
提取字符串中的字符
提取字符串字符有2种安全的方法:
- charAt(position)
- charCodeAt(position)
charAt() 方法
charAt() 方法返回字符串中指定索引(位置)的字符:
var str = "HELLO WORLD"; str.charAt(0); // returns H
charCodeAt() 方法
charCodeAt() 方法返回字符串中指定索引处的字符的unicode值:
var str = "HELLO WORLD"; str.charCodeAt(0); // returns 72
将字符串作为数组访问是不安全的
可能见过这样的代码,将字符串作为数组访问:
var str = "HELLO WORLD"; str[0]; // returns H这是不安全和不可预测的:
- 它不适用于所有浏览器 (不包括IE5, IE6, IE7)
- 它使字符串看起来像数组 (但事实并非如此。)
- str[0] = "H" 不会报错 (但是它不工作)
如果要将字符串作为数组读取,首先将其转换为数组.
将字符串转换为数组
使用split()方法,可以将字符串转换为数组:
var txt = "a,b,c,d,e"; // String txt.split(","); // Split on commas txt.split(" "); // Split on spaces txt.split("|"); // Split on pipe如果省略了分隔符, 返回的数组将包含索引中的整个字符串.
如果分隔符是 "", 返回的数组将是单个字符作为数组:
var txt = "Hello"; // String txt.split(""); // Split in characters
完整的字符串参考
完整的字符串参考, 请访问 完整的字符串参考.
参考包含所有字符串属性和方法的说明和示例.