2017-01-03 84 views
0

因爲我是一個新手,所以我需要在Javascript中使用一些幫助。我需要創建一個讀取字符串輸入的函數,並將字符串中的奇怪索引字符轉換爲upperCase,將偶數字符轉換爲lowerCase。在JavaScript中將字符串中的奇數和偶數索引字符轉換爲大寫/低位字符?

function alternativeCase(string){ 
    for(var i = 0; i < string.length; i++){ 
     if (i % 2 != 0) { 
      string[i].toUpperCase(); 
     } 
     else { 
      string[i].toLowerCase(); 
     } 
    } 
    return string; 
} 

我知道我正在做一些非常錯誤的事情,但我無法弄清楚如何解決它。請幫助?

+1

的可能的複製[是JavaScript的字符串不可改變?我需要JavaScript中的「字符串生成器」嗎?](http://stackoverflow.com/questions/51185/are-javascript-strings-immutable-do-i-need-a-string-builder-in-javascript) –

+0

RegExp替代方案https://stackoverflow.com/a/47460488/1383168 – Slai

回答

0

試試這個:

function alternativeCase(string){ 
    var output = ""; 
    for(var i = 0; i < string.length; i++){ 
     if (i % 2 != 0) { 
      output += string[i].toUpperCase(); 
     } 
     else { 
      output += string[i].toLowerCase(); 
     } 
    } 
    return output; 
} 
+0

謝謝!這完全適用於我!我的代碼並不遙遠! – Ann0nym

+0

不要離開你遠離你,你靠近!正如其他評論所提到的,JS中的字符串是「不可變的」,這意味着如果不將它分配給新的變量(或它本身),它們就不能在內存中改變,這就是爲什麼你不能在字符串中設置字符的原因是。這是你方法的唯一問題。 –

0

字符串在JavaScript中是不可變的,試試這個:

function alternativeCase(string){ 
 
    var newString = []; 
 
    for(var i = 0; i < string.length; i++){ 
 
     if (i % 2 != 0) { 
 
      newString[i] = string[i].toUpperCase(); 
 
     } 
 
     else { 
 
      newString[i] = string[i].toLowerCase(); 
 
     } 
 
    } 
 
    return newString.join(''); 
 
}

2
function alternativeCase(string){ 
    return string.split('').map(function(c,i) { 
    return i & 1 ? c.toUpperCase() : c.toLowerCase(); 
    }).join(''); 
} 
相關問題