用特殊字符将句子分隔成包含空格的单词

时间:2018-10-07 16:14:31

标签: javascript arrays regex string split

我想用特殊字符将句子分隔为单词保留空格。像这样:

"la sílaba tónica es la penúltima".split(...regex...)

收件人:

["la ", "sílaba ", "tónica ", "es ", "la ", "penúltima"]
    ↑                     ↑      ↑      ↑
  space                 space  space  space

我尝试使用此答案的修改版本: https://stackoverflow.com/a/26184632/2083117

使用该答案中的代码:

"la sílaba tónica es la penúltima".split(/\b(?![\s.])/)

结果:

["la ", "s", "í", "laba ", "t", "ó", "nica ", "es ", "la ", "pen", "ú", "ltima"]
              ↑                  ↑                                  ↑

那些特殊字符不能分开单词。

我的版本仅添加了我要保留的特殊字符(.áéíóúñ,:;?

"la sílaba tónica es la penúltima".split(/\b(?![\s.áéíóúñ,:;?])/)

结果:

["la ", "sí", "laba ", "tó", "nica ", "es ", "la ", "penú", "ltima"]
          ↑              ↑                              ↑

现在包含了这些字符,但是单词后面紧接着出现了单词。

正确的正则表达式是什么?

3 个答案:

答案 0 :(得分:4)

尝试匹配 <#macro pager url="/main" page > 而不是拆分。

\S+\s*

答案 1 :(得分:2)

let splitArray = "la sílaba tónica es la penúltima".split(" ")

let splitArrayWithSpaces =  splitArray.map((item, index ) => {
  if(index!== splitArray.length-1) return (item+ " ")
  else return item
})

console.log(splitArrayWithSpaces)

答案 2 :(得分:0)

a-z\xC0-\xff选择字符和变音符号。我将其除以/[^a-z\xC0-\xff]/。然后我添加空间。

或者,您也可以除以/[\s]/

let test = "la sílaba tónica es la penúltima".split(/[^a-z\xC0-\xff]/)
for(let i=0; i < test.length; i++){test[i]+= " ";}
console.log(test)