46

将完整的单词放入具有后续字符的数组中的好策略是什么。

例子。

这是一个惊人的句子。

Array(
[0] => This 
[1] => is
[2] => an
[3] => amazing
[4] => sentence.
)

元素 0 - 3 将有一个后续空格,因为句点在第 4 个元素之后。

我需要你通过间距字符来分割这些,然后一旦注入数组元素的元素宽度达到 X,就换成新行。

请不要给出大量代码。我更喜欢自己写,告诉我你会怎么做。

4

8 回答 8

63

Ravi 的答案类似,使用match,但使用\b正则表达式中的单词边界来分割单词边界:

'This is  a test.  This is only a test.'.match(/\b(\w+)\b/g)

产量

["This", "is", "a", "test", "This", "is", "only", "a", "test"]

或者

'This is  a test.  This is only a test.'.match(/\b(\w+\W+)/g)

产量

["This ", "is  ", "a ", "test.  ", "This ", "is ", "only ", "a ", "test."]
于 2016-04-08T19:58:23.313 回答
62

只需使用split

var str = "This is an amazing sentence.";
var words = str.split(" ");
console.log(words);
//["This", "is", "an", "amazing", "sentence."]

如果你需要一个空间,你为什么不这样做呢?(之后使用循环)

var str = "This is an amazing sentence.";
var words = str.split(" ");
for (var i = 0; i < words.length - 1; i++) {
    words[i] += " ";
}
console.log(words);
//["This ", "is ", "an ", "amazing ", "sentence."]

哦,睡个好觉!

于 2013-08-27T18:55:58.980 回答
17

试试这个

var words = str.replace(/([ .,;]+)/g,'$1§sep§').split('§sep§');

这会

  1. §sep§在每个选定的分隔符后插入一个标记[ .,;]+
  2. 在标记的位置拆分字符串,从而保留实际的分隔符。
于 2013-08-27T19:04:01.407 回答
7

如果您需要空格和点,最简单的方法是。

"This is an amazing sentence.".match(/.*?[\.\s]+?/g);

结果是

['This ','is ','an ','amazing ','sentence.']
于 2013-08-27T19:13:01.477 回答
3

使用splitandfilter删除前导和尾随空格。

let str = '     This is an amazing sentence.  ',
  words = str.split(' ').filter(w => w !== '');

console.log(words);

于 2020-11-12T03:07:31.007 回答
1

如果您想在 O(N) 中包含空格并完成,这是一个选项

var str = "This is an amazing sentence.";
var words = [];
var buf = "";
for(var i = 0; i < str.length; i++) {
    buf += str[i];
    if(str[i] == " ") {
        words.push(buf);
        buf = "";
    }
}

if(buf.length > 0) {
    words.push(buf);
}
于 2013-08-27T19:01:27.393 回答
0

这可以通过 lodash 来完成_.words

var str = 'This is an amazing sentence.';
console.log(_.words(str, /[^, ]+/g));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

于 2018-11-07T05:35:36.590 回答
0

可以通过以下split功能完成:

"This is an amazing sentence.".split(' ')
于 2021-04-08T16:28:19.653 回答