用数字单位替换字符串的一部分

Replace a part of a string with units of a number

本文关键字:一部分 字符串 替换 数字 单位      更新时间:2023-09-26

我想使用JavaScript在Google电子表格中实现一个函数。我有:

var s1 = "000000000000";  // (12 zeros)
var n1 = 1;

我有一个介于1和12之间的第三个数字。如果我的数字是6,那么结果应该是:11111100000。如果我的数字是8,那么结果需要是111111110000。

到目前为止,我被困在这里:

function REP(b1) {
  var s1 = "000000000000" ;
  var n1 = 1;

  if (b1 >=1 && b1 <= 12) {
    return s1.split("0").join(n1) ;
  }
  else{
    return "no value" ;
  }
}

我更喜欢一种简单的方法:

function rep(b1) {
    var s1 = "000000000000";
    var s2 = "111111111111";
    if (b1 >=1 && b1 <= 12) {
        return s2.slice(0, b1) + s1.slice(b1);
    } else {
        return "no value";
    }
}
console.log(rep(6)); // 111111000000
console.log(rep(8)); // 111111110000
const replacement = "1"
function replaceZeros(n) {
  var result = "000000000000"
  while (n --> 0) { // it actually mean `n-- > 0`, but it looks cooler that way
    result = result.replace(/0/, replacement)
  }
  return result
}

这只是将字符串CCD_ 2中的第一个CCD_。

请参阅JS Bin上的演示。

很有趣。我想试试

function REP(b1) {
  var ret = ""
  for (var i = 0; i < 12; i++){
      if(i < b1){
         ret += "1";
      }
      else{
         ret += "0";
      }
  }
  return ret;
}

hrm。。。也许还有更好的方法。。。

编辑:哦,是的,我想你可以:

function REP(b1) {
  if(isNaN(b1) || b1 < 1 || b1 > 12){
      return 'no answer';
  }
  return "1".repeat(b1) + "0".repeat(12-b1);
}

您可以使用Array.join来重复字符

请参阅以下示例。。。

alert(REP(6));
function REP(b1) {
  var s1 = "000000000000";
  var n1 = 1;
  
  if (b1 >=1 && b1 <= 12) {
    return (Array(b1 + 1).join(n1) + s1).substr(0, 12);
  } else{
    return "no value" ;
  }
}

不确定它的性能如何,但这里有一个regex方法。

function REP(b1) {
  if (b1 < 1 || b1 > 12) return 'no value';
  var rx = new RegExp('0{' + b1 + '}');
  return '000000000000'.replace(rx, Array(b1 + 1).join(1));
}

演示