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

时间:2016-05-14 14:43:19

标签: javascript google-apps-script google-sheets

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

RateLimit

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

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

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

5 个答案:

答案 0 :(得分:1)

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
}

这只是替换字符串0次中的第一个n

请参阅demo on JS Bin

答案 1 :(得分:1)

我更喜欢简单的方法:

take 1 $ filter even [1..10]

答案 2 :(得分:0)

有趣。我会尝试

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);
}

答案 3 :(得分:0)

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

参见以下示例......

&#13;
&#13;
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" ;
  }
}
&#13;
&#13;
&#13;

答案 4 :(得分:0)

不确定这是多么高效,但这是一种正则表达式方法。

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));
}

DEMO