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

基于非字母数字字符数量对字符串数组分组的程序开发需求

解决方案:按非字母数字字符数量分组字符串数组

这是个很明确的分组需求,我直接给你一个符合要求的JavaScript实现,附带详细解释:

实现代码

function groupByNonAlphanumericCount(strings) {
  // 初始化结果对象
  const result = {};
  
  strings.forEach(str => {
    // 统计当前字符串中非字母数字字符的数量
    // 正则匹配所有非a-z/A-Z/0-9的字符,没有匹配项时用空数组避免null报错
    const nonAlnumCount = (str.match(/[^a-zA-Z0-9]/g) || []).length;
    // 生成对应的键名,比如count0、count1
    const key = `count${nonAlnumCount}`;
    
    // 如果对象中还没有这个键,先初始化空数组
    if (!result[key]) {
      result[key] = [];
    }
    // 将当前字符串加入对应分组
    result[key].push(str);
  });
  
  return result;
}

// 测试你的输入示例
const list = ['1','1.2','1.2.3','1.23.4','1.4','11','33.44.55.66.99','ab.cd.ed.df'];
const output = groupByNonAlphanumericCount(list);
console.log(output);

代码解释

  • 正则匹配逻辑:/[^a-zA-Z0-9]/g 是一个全局正则表达式,^在方括号内表示“非”,所以会匹配所有不是大小写字母和数字的字符。
  • 处理无匹配的情况:如果字符串里没有非字母数字字符,str.match()会返回null,所以我们用|| []把它转成空数组,这样length就是0,避免报错。
  • 分组逻辑:遍历每个字符串时,先计算非字母数字字符的数量,生成对应的键名,然后把字符串添加到对应分组的数组中——如果分组不存在,就先创建一个空数组。

测试结果

运行上面的代码后,输出和你给出的示例完全一致:

{
  count0: ['1', '11'],
  count1: ['1.2', '1.4'],
  count2: ['1.2.3', '1.23.4'],
  count3: ['ab.cd.ed.df'],
  count4: ['33.44.55.66.99']
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 10:27:40