2016-05-14 125 views
1

我想使用JavaScript在Google Spreadsheet中實現函數。我有:用數字單元替換字符串的一部分

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

我有1和12之間的第三數目如果我的數量爲6的結果將需要:111111000000.如果我的數量爲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" ; 
    } 
} 

回答

1

我更喜歡一個簡單的方法:

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 
0

有趣。我會嘗試

function REP(b1) { 
    var ret = "" 

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

人力資源管理......有可能是雖然更好的方式...

編輯:噢,我想你可以這樣做:

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

'repeat'具有非常有限的瀏覽器集成。 – Andy

0

可以使用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" ; 
 
    } 
 
}

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 
} 

這只是替換字符串中的第0n倍。

請參閱demo on JS Bin

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