2016-01-27 72 views
0

我正在嘗試編寫一個函數,它接受字符串並將所有小寫字母改爲大寫,反之亦然。 「低高」將轉化爲「低高」反字符串大小寫(javascript)

繼承人我有:

var convertString = function (str){ 
var s = ''; 
var i = 0; 
while (i < str.length) { 
    var n = str.charAt(i); 
     if (n == n.toUpperCase()) { 
      n = n.toLowerCase; 
     } 
     else { 
      n = n.toUpperCase; 
     } 

i +=1; 
s += n; 

} 
return s; 
}; 
convertString("lower UPPER"); 

我使用this website工作,我得到一個輸出非常奇怪的消息。

Here is a pic of what happens after I run it.

+1

'toUpperCase()' –

+0

''lower UPPER'.replace(/./ g,c => c === c.toUpperCase()?c.toLowerCase():c.toUpperCase())' – zerkms

回答

0

你剛纔的一切是正確的,除了你if語句裏面。您正在設置n等於其toLowerCasetoUpperCase方法,而不是其返回值。你需要調用這些方法並設置n等於其返回值:

var convertString = function (str) { 
    var s = ''; 
    var i = 0; 
    while (i < str.length) { 
     var n = str.charAt(i); 
     if (n == n.toUpperCase()) { 
      // *Call* toLowerCase 
      n = n.toLowerCase(); 
     } else { 
      // *Call* toUpperCase 
      n = n.toUpperCase(); 
     } 

     i += 1; 
     s += n; 
    } 
    return s; 
}; 

convertString("lower UPPER"); 

你得到的輸出('function toUpperCase() { [native code] }...)是每一種方法的結果被轉換爲字符串,然後再連接到你的結果字符串。您可以通過在控制檯上運行這些命令中得到相同的結果:

  • console.log("".toUpperCase);
  • console.log("".toUpperCase.toString());

兩者的結果是function toUpperCase() { [native code] }

快樂編碼!

+0

Ahhh幾乎!謝謝您的幫助! – seanyesmunt