JavaScript String类常用方法比较

转自:http://hi.baidu.com/%C5%ED%BD%F0%BD%F0%BB%D4%BB%D4/blog/item/8789010433f42613738da5e2.html
JS对String的子串判断的方法,比较容易混淆。
1、 charAt()
返回字符串中的第n个字符
Method: 
stirng.charAt(n)

n 获取的字符的位置,取值在0<=n<=string.length-1
字符串中第一个字符的下标值是0。如果参数n不在0和 string.length-1之间,该方法将返回一个空字符串。注意,JavaScript并没有一种有异于字符串类型的字符数据类型,所以返回的字符 是长度为1的字符串。

2、 indexOf()
检索字符串
Method: 
string.indexOf(substring)
string.indexOf(substring, start)

substring
要在字符串string中检索的子串。
start
一个选用的整数参数,声明了在字符串string中开始检索的位置。它的合法聚会是0(字符串中的第一个字符的位置)到string.length-1(字符串的最后一个字符的位置)。如果省略了这个参数,将从字符串的第一个字符开始检索。

返回值

如果在string中的start位置之后存在substring,返回出现的第一个substring的位置。如果没有找到子串substring,返回-1。

描述

方法 String.indexOf()将从头到尾的检索字符串string,看它是否含有子串substring。开始检索的位置在字符串string的 start处或string的开头(没有指定start参数时)。如果找到了一个substring,那么String.indexOf()将返回 substring的第一个字符在string中的位置。string中的字符位置是从0开始的。
如果在string中没有找到substring,那么String.indexOf()方法将返回-1。

3、 String.lastIndexOf()

从后向前检索一个字符串
Method:
string.lastIndexOf(substring)
string.lastIndexOf(substring, start)

substring
要在字符串string中检索的子串。
start
一个选用的参数,声明了在字符串string中开始检索的位置。它的合法取值是0(字符串中的第一个字符的位置)到string.length-1(字符串中的最后一个字符的位置)。如果省略了这个参数,将从字符串的最后一个字符处开始检索。

返回值

如果在string中的start位置之前存在substring,那么返回的就是出现的最后一个substring的位置。如果没有找到子串substring,那么返回的就是-1。

描述

方法 String.lastIndexOf()将从尾到头的检索字符串string,看它是否含有子串substring。开始检索的位置在字符串 string的start处或string的结尾(没有指定start参数时)。如果找到了一个substring,那么 String.lastIndexOf()将返回substring的第一个字符在string中的位置。由于是从尾到头的检索一个字符串,所以找到的第 一个substring其实是出现在位置start之前的最后一个substring。
如果在string中没有找到substring,那么String.lastIndexOf()方法将返回-1。

4、String.substring()
返回字符串的一个子串
Method:
string.substring(from, to)

from
一个非负的整数,声明了要抽取的子串的第一个字符在string中的位置。
to
一个可选的非负的整数,比要抽取的子串的最后一个字符在string中的位置多1。如果省略了该参数,返回的子串直到字符串的结尾。

返回值

一个新字符串,其长度为to-from,存放的是字符串string的一个子串。这个新字符串含有的字符是从string中的from处到to-1处复制的。

描述

String.substring()将返回字符串string的子串,由from到to之间的字符构成,包括位于from的字符,不包括位于to的字符。
如果参数from与to相等,那么该方法返回的就是一个空串(即长度为0的字符串)。如果from比to大,那么该方法在抽取子串之前会先交换这两个参 数。要记住,该子串包括from处的字符,不包括to处的字符。虽然这样看来有违直觉,但这种系统一个值得注意的重要特性是,返回的子串的长度总等于 to-from。

5、 String.substr()
抽取一个子串
Method:
string.substr(start, length)

start
要抽取的子串的起始下标。如果是一个负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1指定字符串中的最后一个字符,-2指倒数第二个字符,以此类推。
length
子串中的字符数。如果省略这个参数,那么返回从string的开始位置到结尾的子串。

返回值

一个string中的副本,包括从string的start处(包括start所指的字符)开始的length个字符。如果没有指定length,返回的字符串包含从start到string能结尾的字符。

描述

substr()将在string中抽取并返回一个子串。但是它并不修改string。
注意,substr()指定的是子串的开始位置和长度,它是String.substring()和String.splice()的一种有用的替代方法,后两者指定的都是起始字符的位置。但要注意,ECMAScript没有标准化该方法,因此反对使用它。

例子

var s = "abcdefg";
s.substr(2,2);   // Returns "cd"
s.substr(3);     // Returns "defg"
s.substr(-3,2);  // Should return "ef"; returns "ab" in IE 4

Bugs

在IE4中,参数start的值无效(这在IE的后来版本中已修正了)。start值指定的不是从字符串尾部开始算起的字符位置,而是第0个字符的位置。

6、 String.split()

将字符串分割成字符串数组

Method:

string.split(delimiter, limit)

delimiter
字符串或正则表达式,从该参数指定的地方分割string。

limit
这个可选的整数指定了返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数字。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。

返回值

一个字符串数组,是通过在delimiter指定的边界处将字符串string分割成子串创建的。返回的数组中的子串不包括delimiter自身,但下面列出的情况除外。

描述

方 法split()将创建并返回一个字符串数组,该数组中的元素是指定的字符串string的子串,最多具有limit个。这些子串是通过从头到尾检索字符 串中与delimiter匹配的文本,在匹配文本之前和之后分割string得到的。返回的子串中不包括定界符文本(文本部分结尾处提到的情况除外)。如 果定界符从字符串开关开始匹配,返回的数组的第一个元素是空串,即出现在定界符之前的文本。同样,如果定界符的结尾匹配,返回的数组的最后一个元素也是空 串(假如与limit没有冲突)。

如果没有指定delimite,或者delimite为"",则每个字符都会被分割。

例子

在使用结构复杂的字符串时,方法split()最有用。例如:
"1:2:3:4:5".split(":");  // Returns ["1","2","3","4","5"]
"|a|b|c|".split("|");    // Returns ["", "a", "b", "c", ""]

split()方法的另一个常见用法是解析命令的与之相似的字符串,用空格将它们分割成单词:
var words = sentence.split(' ');

正则表达式作为定界符,很容易把字符串分割成单词:
var words = sentence.split(/\s+/);

要把字符串分割成字符数组,可以用空串作为定界符。如果只想把字符串前一部分分割成字符数组,需要使用limit参数:
"hello".split("");     // Returns ["h","e","l","l","o"]
"hello".split("", 3);  // Returns ["h","e","l"]

如果想便返回的数组包括定界符或定界符的一个或多个部分,可以使用带子表达式的正则表达式。例如,下面的代码将在HTML标记处分割字符串,返回的数组中包括这些标记:
var text = "hello <b>world</b>";
text.split(/(<[^>]*>)/);  // Returns ["hello ","<b>","world","</b>",""]

7、 String.search()
检索与正则表达式相匹配的子串
Method:
string.search(regexp)

regexp
要在字符串string中检索的RegExp对象,该对象具有指定的模式。如果该参数不是RegExp对象,则首选将它传递给RegExp()构造函数,把它转换成RegExp对象。

返回值

string中第一个与regexp匹配的子串的起始位置。如果没有找到任何匹配的子串,则返回-1。

描述

方法search()将字符串string中检索与regexp相匹配的子串,并且返回第一个匹配子串的第一个字符的位置。如果没有找到任何匹配的子串,则返回-1。
search()并不执行全局匹配,它将忽略标志g。它也忽略regexp的lastIndex属性,并且总是从字符串的开始进行检索,这意味着它是返回string的第一个匹配的位置。

例子

var s = "JavaScript is fun";
s.search(/script/i)  // Returns 4
s.search(/a(.)a/)    // Returns 1

8、 String.replace()
替换一个与正则表达式匹配的子串
Method:
string.replace(regexp, replacement)

regexp
声明了要替换的模式的RegExp对象。如果该参数是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换成RegExp对象。
replacement
一个字符串,声明的是替换文本或生成替换文本的函数。

返回值

一个新字符串,是用replacement替换了与regexp的第一次匹配或所有匹配之后等到的。

描述

字符串string的方法 repace()执行的是查找并替换操作。它将在string中查找与regexp相匹配的子串,然后用replacement替换这些子串。如果 regexp具有全局性质g,那么replace()将替换所有的匹配子串。否则,它只替换一个匹配子串。

replacement可能是字符串或函数。 如果它是一个字符串,那么每个匹配都将由字符串替换。但replacement中的$字符具有特殊的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。

例子

要确保单词“JavaScript”中的大写字符是正确的,可用下列代码:
text.replace(/javascript/i, "JavaScript");
要将名字,“Doe,John”转换成“John Doe”的形式,可用下列代码:
name.replace(/(\w+)\s*,\s*(\w+)/, "$2 $1");
用花括号替换直引号,可用下列代码:
text.replace(/"([^"]*)"/g, "''$1''");
使字符串中所有单词的第一个字母都是大写的,可用下列代码:
text.replace(/\b\w+\b/g, function(word) {
return word.substring(0,1).toUpperCase( ) + word.substring(1);
});

9、 String.slice()
抽取一个子串
Method:
string.slice(start, end)

start
要抽取的片段的起始下标。如果是负数,那么该参数声明了从字符串的尾部开始算起的位置。也就是说,-1指字符串中的最后一个字符,-2是批倒数第二个字符,以此类推。
end
紧接着要抽取的片段的结尾下标

返回值

一个新字符串,包括字符串string从start开始(包括start)到end为止(不包括end)的所有字符。

描述

方法slice()将返回一个含有字符串string片段的字符串或返回它的一个子串。但是该方法不修改string。
String 对象的方法slice()、substring()和substr()(不建议使用)都返回字符串的指定部分。slice()比substring()要 灵活一些,因为它允许使用负数作为参数。slice()与substr()有所不同,因为它用两个字符的位置指定子串,而substr()则用字符位置和 长度来指定子串。还要注意的是,String.slice()与Array.slice

。如果没有指定这一参数,那么要抽取的子串包括start到原字符串结尾的字符串。如果该参数是负数,那么它声明了从字符串的尾部开始算起的位置。
例子     var s = "abcdefg";
s.slice(0,4)    // Returns "abcd"
s.slice(2,4)    // Returns "cd"
s.slice(4)      // Returns "efg"
s.slice(3,-1)   // Returns "def"
s.slice(3,-2)   // Returns "de"
s.slice(-3,-1)  // Should return "ef"; returns "abcdef" in IE 4

Bugs

在Internet Explorer 4中,参数start的值无效(但在IE后来的版本中修正了)。start值指定的不是从字符串尾部开始算起的字符位置,而是指定第0个字符的位置。

10、 String.valueOf()
返回字符串
Method:
string.valueOf()

返回值

string的原始字符串值。

抛出

TypeError
调用该方法的对象不是String时抛出该异常。

例子:
var a=new String("abc");//一个对象字符型对象object
var b="abc";//一个原始值string
var c=a.valueOf();//把一个对象换成一个原始值
if(typeof(a)==typeof(b)){
alert('a等于b');
} else{
alert('a不等于b');
}
if(typeof(b)==typeof(c)){alert('b等于c');}
var boo = new Boolean(false)
document.write(boo.valueOf())
// 返回 false

11、 String.charCodeAt()
返回字符串中的第n个字符的代码
Method:
string.charCodeAt(n)

n
    返回编码的字符的下标。

返回值

string中的第n个字符的Unicode编码。这个返回值是0~65535之间的16位整数。

描述

方法charCodeAt()与charAt()执行的操作相似,只不过前者返回的是位于指定位置的字符的编码,而后者返回的则是有字符本身的子串。如果n是负数,或者大于等于字符串的长度,则charCodeAt()返回NaN。

要了解从Unicode编码创建字符串的方法,请参阅String.formCharCode()。
12、 String.formCharCode()
从字符编码创建一个字符串
Method:
string.formCharCode(c1, c2, ...)

c1, c2, ...
    零个或多个整数,声明了要创建的字符串的字符的Unicode编码。

返回值

含有指定编码的字符的新字符串。

描述

这个静态方法提供了一种创建字符串的方式,即字符串的每个字符都由单独的数字Unicode编码指定。注意,作为一种表态方法,fromCharCode()是构造函数String()的属性,而不是字符串或String对象的方法。

String.charCodeAt()是与String.fromCharCode()配套使用的实例方法,它提供了获取字符串中单个字符的编码的方法。

例子

// Create the string "hello"
var s = String.fromCharCode(104, 101, 108, 108, 111);

13、 String.match()
找到一个或多个正则表达式的匹配
Method:
string.match(regexp)

regexp
    声明了要匹配的模式的RegExp对象。如果该参数不是RegExp对象,则首先将把它传递给RegExp()构造函数,把它转换成RegExp对象。

返回值

存放匹配结果的数组。该数组的内容依赖于regexp是否具有全局性质g。下面详细说明了这个返回值。

描述

方法match()将检索字符串string,找到一个或多个与regexp匹配的文本。这个方法的行为很大程序上依赖于regexp是否具有性质g。
如 果regexp没有性质g,那么match()就只能在string执行一次匹配。如果没有找到任何匹配的文本有关的信息。该数组的第0个元素存放的是匹 配文本,其余的元素存放的是与正则表达式的子表达式匹配的文本。除了这些常规的数组元素之外,返回的数组还含有两个对象属性。

例子

下面的全局匹配可以找到字符串中的所有数字:
"1 plus 2 equals 3".match(/\d+/g/);    // Return ["1", "2", "3"]
下面的非全局匹配使用了列加复杂的正则表达式,它具有几个用括号括起来的子表达式。与该表达式匹配的是一个URL,与它的子表达式匹配的是那个URL的协议部分、主机部分和路径部分:
var url = /(\w+):\/\/([\w.]+)\/(\S*)/;
var text = "Visit my home page at http://www.isp.com/~david";
var result = text.match(url);
if (result != null) {
var fullurl = result[0];   // Contains "http://www.isp.com/~david"
var protocol = result[1];  // Contains "http"
var host = result[2];      // Contains "www.isp.com"
var path = result[3];      // Contains "~david"
}

14、 String.concat()
连接字符串
Method:
string.concat(value, ...)

value, ...
要连接到string上的一个或多个值。

返回值

把每个参数都连接到字符串string上得到新字符串。

描述

方法concat()将把它的所有参数都转换成字符串(如果必要),然后按顺序连接到字符串string的尾部,返回连接后的字符串。注意,string自身并没有被修改。

String.concat()与Array.concat()很相似。注意,使用“+”运算来进行字符串的连接运算通常更简便一些。

15、 String.toLocaleLowerCase(), toLocaleUpperCase(), toLowerCase(), toUpperCase()
把字符串转换成大小写(Lower小写, Upper大写)

string的一个副本,按照本地方式转换成小/大写字母。只有几种语言(如土耳其语)具有地方特有的大小写映射,此时使用toLocaleLower/UpperCase会和toLower/UpperCase有区别。 通常情况返回值一样。
16、 String.localeCompare()
用本地特定顺序来比较两个字符串
Method:
string.localeCompare(target)

target
    要以本地特定的顺序与string进行比较的字符串。

返回值

说明比较结果的数字。如果string小target,则localeCompare()返回小于0的数。如果string大于target,该方法返回大于0的数。如果两小字符串相等,或根据本地排序规则没有区别,该方法返回0。

描述

把 < 和 > 运算符应用到字符串时,它们只用字符的Unicode编码比较字符串,而不考虑当地的排序规则。以这种方法生成的顺序不一定是正确的。例如,西班牙语中,其中字母“ch”通常作为出现在字母“c”和“d”之间的字符来排序。

localeCompare()方法提供的比较字符串的方法,考虑了默认的本地排序规则。ECMAScript标准没有规定如何进行本地特定的比较操作,它只规定该函数采用底层操作系统提供的排序规则。

例子

可以用下列代码,按照地方特定的排序规则对一个字符串数组排序。
var strings;  // The array of strings to sort; initialized elsewhere
strings.sort(function(a,b) { return a.localeCompare(b) });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值