You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将字符串拆分为含单词与标点的数组(兼容波兰语字符)

解决方案

可以通过逐个字符遍历+分类处理的方式实现,完全不需要正则表达式,天然兼容波兰语等带特殊字符的语言,具体实现如下:

const sentence = 'I have a brother, sister, a dog, and a cat.';
const result = [];
let currentWord = '';
// 定义需要单独拆分的标点集合,可按需扩展
const punctuation = new Set([',', '.', '!', '?', ';', ':']);

for (const char of sentence) {
  if (char === ' ') {
    // 遇到空格,提交当前已构建的单词(如果存在)
    if (currentWord) {
      result.push(currentWord);
      currentWord = '';
    }
  } else if (punctuation.has(char)) {
    // 遇到标点,先提交当前单词,再单独添加标点
    if (currentWord) {
      result.push(currentWord);
      currentWord = '';
    }
    result.push(char);
  } else {
    // 普通字符(包括波兰语特殊字母),加入当前单词
    currentWord += char;
  }
}

// 处理遍历结束后剩余的单词
if (currentWord) {
  result.push(currentWord);
}

console.log(result);

说明

  • 核心逻辑是区分三类字符:空格、需要拆分的标点、普通字符(含波兰语ąęćłńóśźż等特殊字母),分别做对应处理;
  • 用Set存储标点是为了快速判断,你可以根据需求自行扩展标点集合;
  • 遍历结束后额外检查剩余单词,避免遗漏字符串末尾的单词(如果字符串最后不是标点的话);
  • 该方法不会破坏任何语言的特殊字符,因为只有空格和指定标点会触发拆分,其余字符都会被保留在单词中。

内容的提问来源于stack exchange,提问作者Fudal96

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 01:43:12