最后一个与模式匹配相关的字符串方法是 split()。这个方法会根据传入的分隔符将字符串拆分成数组。作为分隔符的参数可以是字符串,也可以是 RegExp 对象。(字符串分隔符不会被这个方法当成 正则表达式。)还可以传入第二个参数,即数组大小,确保返回的数组不会超过指定大小。来看下面的 例子:

let colorText = "red,blue,green,yellow";
let colors1 = colorText.split(",");
let colors2 = colorText.split(",", 2);
let colors3 = colorText.split(/[^,]+/);
// ["red", "blue", "green", "yellow"]
// ["red", "blue"]
// ["", ",", ",", ",", ""]

在这里,字符串 colorText 是一个逗号分隔的颜色名称符串。调用 split(",")会得到包含这些 3 颜色名的数组,基于逗号进行拆分。要把数组元素限制为 2 个,传入第二个参数 2 即可。最后,使用正 则表达式可以得到一个包含逗号的数组。注意在最后一次调用 split()时,返回的数组前后包含两个空 字符串。这是因为正则表达式指定的分隔符出现在了字符串开头("red")和末尾("yellow")。

最后一个方法是 localeCompare(),这个方法比较两个字符串,返回如下 3 个值中的一个。

  • 如果按照字母表顺序,字符串应该排在字符串参数前头,则返回负值。
  • 如果字符串与字符串参数相等,则返回 0。
  • 如果按照字母表顺序,字符串应该排在字符串参数后头,则返回正值。

下面是一个例子:

let stringValue = "yellow";
console.log(stringValue.localeCompare("brick"));  // 1
console.log(stringValue.localeCompare("yellow")); // 0
console.log(stringValue.localeCompare("zoo"));    // -1

在这里,字符串"yellow"与 3 个不同的值进行了比较:"brick"、"yellow"和"zoo"。"brick" 按字母表顺序应该排在"yellow"前头,因此 localeCompare()返回 1。"yellow"等于"yellow",因 此"localeCompare()"返回 0。最后,"zoo"在"yellow"后面,因此 localeCompare()返回-1。强调 一下,因为返回的具体值可能因具体实现而异,所以最好像下面的示例中一样使用 localeCompare():

console.log(`The string 'yellow' comes before the string '${value}'.`); } else if (result > 0) {
console.log(`The string 'yellow' comes after the string '${value}'.`); } else {
console.log(`The string 'yellow' is equal to the string '${value}'.`); }
}
determineOrder("brick");
determineOrder("yellow");
determineOrder("zoo");

这样一来,就可以保证在所有实现中都能正确判断字符串的顺序了。 localeCompare()的独特之处在于,实现所在的地区(国家和语言)决定了这个方法如何比较字符串。