javaScript 正则将英文、日文单词拆分成数组?

作者站长头像
站长
· 阅读数 16

求正则表达式,可以将英文、日文、韩文的句子按单词拆分成数组。在编辑页面可以提前判断是什么类型的语言,然后想根据不同语言选择相应的正则。

具体需求:

英文例句:So we'd do a thorough clean of all surfaces in each room, and polish them where necessary.想把类似( we'd)这种单词组合整体保留下来不拆分。其余的去除标点符号,按单词拆分

日文例句:時間が過ぎて、あっという間に冬休みは過ぎてしまった。冬休みの生活を思い出して、嬉しくなった!去除标点,把单词拆分成数组。

韩语例句:세상에서 가장 큰 시간 낭비가 아니던가요?去除标点,按空格把单词拆分成数组。

回复
1个回答
avatar
test
2024-07-10

英文 可以使用 String.prototype.split() 方法将英文句子拆分为单词。

例如,以下代码将英文句子拆分为单词:

function splitWords(str) {
  return str.replace(/[^\w\s]/gi, '').split(/\s+/);
}

输出结果为:

['So', 'wed', 'do', 'a', 'thorough', 'clean', 'of', 'all', 'surfaces', 'in', 'each', 'room', 'and', 'polish', 'them', 'where', 'necessary']

日语没有“符号”断词,可以借助日语的词法分析器进行拆分,比如 atilika

韩文单词分隔符通常是一个或多个空格字符。然而,在某些情况下,韩文单词之间可能不存在空格,因此可能需要使用其他方法来分割韩文字符串。

例如,可以使用正则表达式,具体方法为使用正则表达式匹配韩文字符串中的每个字,并使用分割符将它们分割开。

以下是使用正则表达式分割韩文字符串的代码:

function splitSentence(sentence) {
  // 韩文字符正则表达式
  const koreanCharRegex = /[\u1100-\u11FF|\u3130-\u318F|\uA960-\uA97F|\uAC00-\uD7AF|\uD7B0-\uD7FF]+/g;
  return sentence.match(koreanCharRegex);
}

const koreanSentence = "세상에서 가장 큰 시간 낭비가 아니던가요?";
console.log(splitSentence(koreanSentence));

输出结果

['세상에서', '가장', '큰', '시간', '낭비가', '아니던가요']
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容