分割字符串的更好方法?

时间:2019-04-10 01:51:12

标签: javascript arrays string

我正在尝试使用带空格的字符串,并在控制台输出中逐行显示每个单词。

我的JavaScript代码采用一个字符串,并创建一个索引数组,其中使用indexOf()操作标识空格。然后,将其通过切片循环,该循环减去不同的索引以获取要切片的字符串的长度,并通过空格索引将其定位在现有字符串中。输出是最终的console.log,即使传入随机字符串,它似乎也可以满足我的要求。

\b(?:[+-]?(?:[0-9]{1,18}|[1-8][0-9]{18}|9(?:[01][0-9]{17}|2(?:[01][0-9]{16}|2(?:[0-2][0-9]{15}|3(?:[0-2][0-9]{14}|3(?:[0-6][0-9]{13}|7(?:[01][0-9]{12}|20(?:[0-2][0-9]{10}|3(?:[0-5][0-9]{9}|6(?:[0-7][0-9]{8}|8(?:[0-4][0-9]{7}|5(?:[0-3][0-9]{6}|4(?:[0-6][0-9]{5}|7(?:[0-6][0-9]{4}|7(?:[0-4][0-9]{3}|5(?:[0-7][0-9]{2}|80[0-7]))))))))))))))))|-9223372036854775808)\b

我希望找到一种更容易/更简单的方法来执行相同的任务,因为将字符串传递给数组效率不高,并且会多次创建字符串。有人可以解释一下更好的方法吗,它将在控制台中逐行显示字符串的各个单词?

谢谢

2 个答案:

答案 0 :(得分:0)

这实际上是由String.split()

完成的

function logWordsBySpaces(str){
   let arr = str.split(" ");

   arr.forEach(function(a){ console.log(a); })
}

logWordsBySpaces("Karma karma karma karma karma chameleon!")

答案 1 :(得分:0)

您应该使用.split

var sp = " ";
var myStr = "I am a \"double quoted\" string inside \"double quotes\""
var twoStr = 'I am a string "and I am a string"';
var stringadd = "and I can slice whenever I want."
var threeStr = myStr + sp + twoStr;
var fourStr = threeStr + sp + stringadd;


const result = [myStr, twoStr, stringadd, threeStr, fourStr].map(string => string.split(sp));

console.log(result);