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

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

具体需求:

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

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

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

阅读 2.5k
1 个回答

英文 可以使用 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));

输出结果

['세상에서', '가장', '큰', '시간', '낭비가', '아니던가요']
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题