最新前端知识尽在ASEOE,喜欢就收藏本站吧! 导航:HTML5CSS3JS移动端JQ插件

String.split( )

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

可用性

JavaScript 1.1; JScript 3.0; ECMAScript v1; 在ECMAScript v3中得到增强

语法

string.split(delimiter, limit)

参数

delimiter

字符串或正则表达式,从该参数指定的地方分割string。ECMAScript V3标准化了正则表达式作为定界符使用时的用法,JavaScript 1.2和JScript 3.0实现了它。JavaScriptl.1没有实现它。

limit

这个可选的整数指定了返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数字。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。ECMAScriptv3标准化了该参数,JavaScript 1.2和JScript 3.0实现了它。JavaScript 1.1没有实现它。

返回值

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

描述

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

如果没有指定delimiter,那么它根本就不对string执行分割,返回的数组中只有一个元素,而不分割字符串元素。如果delimiter是一个空串或与空串匹配的正则表 达式,那么string中的每个字符之间都会被分割,返回的数组的长度与字符串长度相 等(假定王imic不小于该长度)。(注意,这是一种特殊情况,因为没有匹配第一个字符之前和最后一个字符之后的空串。)

前面说过,该方法返回的数组中的子串不包括用于分割字符串的定界符文本。但如果delimiter是包括子表达式的正则表达式,那么返回的数组中包括与这些子表达式匹 配的子串(但不包括与整个正则表达式匹配的文本)。

注意,String.split()执行的操作与Array.join()执行的操作相反。

示例

在使用结构复杂的字符串时,方法split()最有用。例如:

"1:2:3:4:5".split(":");  // 返回 ["1","2","3","4","5"]

"|a|b|c|".split("|");    // 返回 ["", "a", "b", "c", ""] 

split()方法的另—个常见用法是解析命令和与之相似的字符串,用空格将它们分割 成单词:

var words = sentence.split(' '); 

关于delimiter是一个空格的情况,详见“Bug'’小节。用正则表达式作为定界符, 很容易把字符串分割成单词:

var words = sentence.split(/\s+/); 

要把字符串分割成字符数组,可以用空串作为定界符。如果只想把字符串的前一部分 分割成字符数组,需要使用limit参数:

"hello".split("");     // 返回 ["h","e","l","l","o"]

"hello".split("", 3);  // 返回 ["h","e","l"] 

如果想使返回的数组包括定界符或定界符的一个或多个部分,可以使用带子表达式的正则表达式。例如,下面的代码将在HTML标记处分割字符串,返回的数组中包括这些标记:

var text = "hello <b>world</b>";

text.split(/(<[^>]*>)/);  // 返回 ["hello ","<b>","world","</b>",""] 

Bug

在JavaScript的Netscape实现中,如果明确地把语言版本设置为1.2,split()方法具有特殊的行为,即如果delimiter 是一个空格,该方法将在空格处分割字符串,忽略字符串开头和结尾处的空白。

参阅

Array.join( ), RegExp; Chapter 10