原文:JavaScript split() a String – String to Array JS Method,作者:Jessica Wilkins

如果你需要将一个字符串分割成一个子字符串的数组,那么你可以使用JavaScript split() 方法。

在这篇文章中,我将介绍 JavaScript split() 方法并提供代码示例。

split() 方法的基本语法

下面是 JavaScript split() 方法的语法。

str.split(optional-separator, optional-limit)

optional-separator 参数是一种模式,它告诉计算机应该在哪里分割。

optional-limit 参数是一个正数,告诉计算机在返回的数组值中应该有多少个子字符串。

JavaScript split() 方法代码示例

在这第一个例子中,我有一个字符串 "I love freeCodeCamp"。如果我使用没有分隔符的 split() 方法,那么返回值将是整个字符串的数组。

const str = 'I love freeCodeCamp';

str.split();
// 返回值是 ["I love freeCodeCamp"]

使用分隔符参数的例子

如果我想改变它,使字符串被分割成单个字符,那么我需要添加一个分隔符。分隔符将是一个空字符串。

const str = 'I love freeCodeCamp';

str.split('');
// 返回值 ["I", " ", "l", "o", "v", "e", " ", "f", "r", "e", "e", "C", "o", "d", "e", "C", "a", "m", "p"]

请注意,在返回值中,空格被视为字符。

如果我想改变它,使字符串被分割成各个单词,那么分隔符将是一个带有空格的空字符串。

const str = 'I love freeCodeCamp';

str.split(' ');
// 返回值 ["I", "love", "freeCodeCamp"]

使用 limit 参数的例子

在这个例子中,我将使用 limit 参数来返回一个只包含句子 "I love freeCodeCamp" 的第一个单词的数组。

const str = 'I love freeCodeCamp';

str.split(' ',1);
// 返回值 ["I"]

如果我把 limit 改为零,那么返回值将是一个空数组。

const str = 'I love freeCodeCamp';

str.split(' ',0);
//返回值 []

你应该使用 split() 方法来反转一个字符串吗

反转字符串的练习是一个非常流行的编码挑战。解决它的一个常见方法是使用 split() 方法。

在这个例子中,我们有一个字符串 “freeCodeCamp”。如果我们想反转这个词,那么我们可以把 split()reverse()join() 方法连在一起,以返回新的反转字符串。

const str = 'freeCodeCamp';

str.split('').reverse().join('');
//返回值 "pmaCedoCeerf"

.split('') 部分将字符串分割成一个字符数组。

.reverse() 部分将字符数组反转。

.join('') 部分将数组中的字符连接起来并返回一个新的字符串。

这种方法似乎对这个例子很有效。但在一些特殊情况下,这种方法是行不通的。

让我们看一下 MDN 文档中提供的例子。

如果我们试图反转字符串 “mañana mañana”,那么就会导致意外的结果。

const str = 'mañana mañana'
const reversedStr = str.split('').reverse().join('')

console.log(reversedStr)
// 返回值将是 "anãnam anañam"

Notice how the tilde(~) is placed over the letter "a" instead of "n" in the reversed word. This happens because our string contains what is called a grapheme.

A grapheme cluster is a series of symbols combined to produce one single character that humans can read on screen. When we try to reverse the string using these types of characters, the computer can misinterpret these characters and produce an incorrect version of the reversed string.

If we just isolate the split method, you can see how the computer is breaking up each individual character.

注意到在反转的单词中,波浪线(~)是如何放在字母 "a" 而不是 "n" 上面的。发生这种情况是因为我们的字符串包含了所谓的字素。

字素簇是一系列符号组合成的一个单一字符,人类可以在屏幕上阅读。当我们试图用这些类型的字符来反转字符串时,计算机会误解这些字符,并产生一个不正确的反转字符串版本。

如果我们只是孤立的分割方法,你可以看到计算机是如何分割每个单独的字符的。

const str = 'mañana mañana'

console.log(str.split(''))
//["m", "a", "ñ", "a", "n", "a", " ", "m", "a", "n", "̃", "a", "n", "a"]

如果你使用这些特殊字符,你可以在你的项目中使用一些来修复这个问题,并正确地反转字符串。

总结

JavaScript split() 方法是用来将一个字符串分割成一个子字符串数组的。

下面是 JavaScript split() 方法的语法。

str.split(optional-separator, optional-limit)

分隔符是一种模式,它告诉计算机每个分割应该发生在哪里。

limit 参数是一个正数,告诉计算机在返回的数组值中应该有多少个子字符串。

你可以使用 split() 方法来反转一个字符串,但是在一些特殊情况下这是行不通的。如果你的字符串中包含字素簇,那么结果可能会产生一个不正确的反转词。

你也可以选择使用 spread() 语法,在反转字符串之前将其拆分。

const str = 'mañana mañana'
console.log([...str].reverse().join(""))

我希望你喜欢这篇文章,并祝你在 JavaScript 之旅中好运。