gpt4 book ai didi

javascript - 用两个词而不是一个词对数组进行分组

转载 作者:行者123 更新时间:2023-11-30 19:30:08 25 4
gpt4 key购买 nike

下面的代码:当一个单词被写入时,它将其存储为自己的数组,这意味着每个单词都是它自己的数组,然后检查是否重复出现。

我想要的:与其创建一个单词数组(在按下空格键后),我希望它在写入 2 个单词后执行此操作。

IE:不是我写“Hello”+ 空格键,而是代码将“hello”创建为一个数组。我希望它等到我写完“hello my”+ 空格键,然后用这两个数字创建一个数组。

我猜这与正则表达式有关?我尝试了很多不同的东西(有点像新手),但我不明白如何让它将 2 个词组合在一起而不是一个。

  const count = (text) => {

const wordRegex = new RegExp(`([\\p{Alphabetic}\]+)`, 'gu');
let result;
const words = {};
while ((result = wordRegex.exec(text)) !== null) {
const word = result[0].toLowerCase();
if (!words[word]) {
words[word] = [];
}
words[word].push(result.index);
words[word].push(result.index + word.length);
}
return words;
};

最佳答案

你可以使用

const wordRegex = /\p{Alphabetic}+(?:\s+\p{Alphabetic}+)?/gu;

详情

  • \p{Alphabetic}+ - 1+ 个字母字符
  • (?:\s+\p{Alphabetic}+)? - 一个可选序列:
    • \s+ - 1+ 个空格
    • \p{Alphabetic}+ - 1+ 个字母字符

第二个词是可选匹配的,这样最后的奇数词也可以被匹配。

请参阅下面的 JS 演示:

 const count = (text) => {

const wordRegex = /\p{Alphabetic}+(?:\s+\p{Alphabetic}+)?/gu;
let result;
const words = {};
while ((result = wordRegex.exec(text)) !== null) {
const word = result[0].toLowerCase();
if (!words[word]) {
words[word] = [];
}
words[word].push(result.index);
words[word].push(result.index + word.length);
}
return words;
};

console.log(count("abc def ghi"))

定义此正则表达式的 RegExp 构造函数方法是

const wordRegex = new RegExp("\\p{Alphabetic}+(?:\\s+\\p{Alphabetic}+)?", "gu");

但是,由于模式是静态的,因此没有变量用于构建模式,您可以使用正则表达式文字表示法,如答案顶部所示。

关于javascript - 用两个词而不是一个词对数组进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56509732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com