JavaScript 逐字断句

IT技术 javascript jquery
2021-03-14 15:16:32

将完整的单词及其后续字符放入数组中的好策略是什么?

例子。

这是一个惊人的句子。

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

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

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

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

6个回答

只需使用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."]

哦,睡个好觉!

@cars10 改变了答案 - 这能解决吗?
2021-04-22 15:16:32
@ user2716649 正如丹尼斯·马丁内斯 (Dennis Martinez) 所提到的,您只需使用words.join(" ")即可This is an amazing sentence.再次获取
2021-04-28 15:16:32
我只是在打字。不错,反应快。
2021-04-30 15:16:32
好的答案:) 我需要空格,因为用户句子有空格,我计划重新输出他们的句子,而不必在循环中声明空格。:) 感谢你
2021-05-01 15:16:32
@cars10 为什么每个单词的末尾都需要空格?如果您在连接字符串时希望它们返回.join(' ');
2021-05-10 15:16:32

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."]
这确实是最好的答案,因为空间分割对于现实生活场景并不真正有用。好吧,除非您不使用标点符号并始终使用单个空格。
2021-04-22 15:16:32
只有英文单词:(
2021-04-30 15:16:32
这将“won't”转换为“won”和“t”。这允许收缩: str.match(/\b(\w+)'?(\w+)?\b/g)
2021-05-06 15:16:32

试试这个

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

这会

  1. §sep§在每个选定的分隔符后插入一个标记[ .,;]+
  2. 在标记的位置拆分字符串,从而保留实际的分隔符。

如果你需要空格和点,最简单的就是。

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

结果将是

['This ','is ','an ','amazing ','sentence.']

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

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

console.log(words);