您的位置:首页 > Web前端 > JavaScript

JavaScript String类常用方法比较

2012-06-24 13:38 351 查看
转自: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([code]boo.valueOf()
)
// 返回 false

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

n
返回编码的字符的下标。[/code]

返回值
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) });

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: