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

如何处理0-1字符串:提取指定字符、转数字求和并匹配变量

处理0/1字符串的特定字符提取与验证需求

我最近碰到这么一个业务需求:需要处理一个由0和1组成的固定长度字符串,具体要求如下:

  • 输入:每次内容会变化但长度固定的0/1字符串timesheetcoldata(示例:100000000000000000000000100000000000000000000000100000000000000000000000100000000000000000000000100000000000000000000000100000000000000000000000)
  • 核心步骤:
    • 提取字符串的第一个字符,以及之后每24个位置的字符(对应业务中的colsCount变量),示例提取结果为"111111"
    • 将提取到的字符转换为数字数组,如[1, 1, 1, 1, 1, 1]
    • 对数组中的数字求和,示例结果为6
    • 判断求和结果是否等于变量rowsCount,返回布尔值(相等为true,不等为false)

初始版本函数

最开始我只实现了字符串的拼接与输出功能,代码如下:

$("#J_timingSubmit").click(function(ev){ 
    var sheetStates = sheet.getSheetStates(); 
    var rowsCount = 6; 
    var colsCount = 24; 
    var timesheetrowsdata = ""; 
    var timesheetcoldata = ""; 
    for(var row= 0, rowStates=[]; row<rowsCount; ++row){ 
        rowStates = sheetStates[row]; 
        timesheetrowsdata += rowStates+(row==rowsCount-1?'':','); 
    } 
    timesheetcoldata = timesheetrowsdata.replace(/,/g, ''); 
    console.log(timesheetcoldata); 
});

优化后的完成版函数

感谢Rajesh、MauriceNino及其他开发者的思路启发,我完成了满足所有需求的函数:

$("#J_timingSubmit").click(function(ev){ 
    var sheetStates = sheet.getSheetStates(); 
    var rowsCount = 6; 
    var timesheetrowsdata = ""; 
    var timesheetcoldata = ""; 
    // 拼接并生成目标0/1字符串
    for(var row= 0, rowStates=[]; row<rowsCount; ++row){ 
        rowStates = sheetStates[row]; 
        timesheetrowsdata += rowStates+(row==rowsCount-1?'':','); 
    } 
    timesheetcoldata = timesheetrowsdata.replace(/,/g, ''); 
    
    // 提取指定位置字符、转换为数字数组并求和
    var count = 0; 
    var list = []; 
    // 从索引0开始,每24个字符取一次
    for(var i = 0; i< timesheetcoldata.length; i+=24) { 
        const num1 = Number(timesheetcoldata.charAt(i)); 
        list.push(num1); 
        count += num1; 
    } 
    // 判断求和结果是否与rowsCount相等
    let isSameAsRowsCount = count == rowsCount; 
    console.log('Is Same? ', isSameAsRowsCount); 
});

关键逻辑说明

  • 通过步长为24的for循环,精准取出字符串中索引0、24、48...位置的字符
  • 用Number()将字符类型转为数字,同时存入数组并累加求和
  • 直接通过相等运算符比较求和结果与rowsCount,得到最终需要的布尔值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:19:53