2016-10-22 64 views
1

我想在Javascript中轉換大寫和小寫的代碼。在javascript中轉換大寫和小寫

例如,'嗨,堆棧溢出'。 ---->'hI,sTACK oVERFLOW'

我該怎麼辦?

+0

你試一下這個簡單的解決方案? –

回答

3

你可以在每個角色上運行,然後隱蔽它爲小寫,如果是大寫的,以大寫,如果它在小寫或把它當作是如果它沒有(如果它是一個逗號,冒號等):

str = 'Hi, Stack Overflow.'; 
res = ''; 
for (var i = 0; i < str.length; ++i) { 
    c = str[i]; 
    if (c == c.toUpperCase()) { 
    res += c.toLowerCase(); 
    } else if (c == c.toLowerCase()) { 
    res += c.toUpperCase(); 
    } else { 
    res += c; 
    } 
} 
+0

另請參閱此答案以獲得更高級的解決方案:http://stackoverflow.com/a/38703925/1743938 –

+0

通常不會考慮直接對字符串進行變異(通過訪問它的索引)。通常最好將它轉換爲一個數組(使用沒有任何參數的.split()),然後迭代數組並重新組合字符串.join()。就像一個想法。 –

0

一個函數,它會爲你做到這一點:

function reverseCase(input) { 
    var output = [] 
    for(var char in input) { 
     var character = input[char] 
     if(character == character.toUpperCase()) 
      output.push(character.toLowerCase()) 
     else 
      output.push(character.toUpperCase()) 
    } 
    return output.join('') 
} 
+0

對我來說這個函數會導致TypeErrors。你已經測試過了嗎? –

+0

是的,我只是有一個錯字。 http://codepen.io/LewisYearsley/pen/RGEzXA?editors=1010 – Lew

0

var hi = 'Hi, Stack Overflow.'; 
 

 
var hI = hi.split(""); 
 
for(var i=0;i<hI.length;i++){ 
 
if(hI[i] == hI[i].toLowerCase())hI[i] = hI[i].toUpperCase(); 
 
else if(hI[i] == hI[i].toUpperCase())hI[i] = hI[i].toLowerCase(); 
 
} 
 
hI = hI.join(""); 
 
alert(hI); 
 
//'hI, sTACK oVERFLOW'

0
var input = 'Hi, Stack Overflow.' 
var arr = input.split(' '); 

alert(arr); 
var output = arr.map(function(elem){ 

    return (elem[0].toLowerCase() + elem.substring(1,elem.length).toUpperCase()); 

}); 

alert(output.join()); 
2

您可以嘗試使用map()

var a = 'Hi, Stack Overflow!' 
 

 
var ans = a.split('').map(function(c){ 
 
    return c === c.toUpperCase() 
 
    ? c.toLowerCase() 
 
    : c.toUpperCase() 
 
}).join('') 
 

 
console.log(ans)

0
<!DOCTYPE html> 
<html> 
<head> 
<title>hello</title> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
</head> 
<body> 

<script> 
$(document).ready(function(){ 
    var x = 'Hi, Stack Overflow.'; 

    alert(caseAlter(x)); 

    function caseAlter(txt){ 
     var output = ""; 

     for(var i = 0; i < txt.length; i++){ 
      if(txt[i] == txt[i].toUpperCase()){ 
       output += txt[i].toLowerCase(); 
      }else{ 
       output += txt[i].toUpperCase(); 
      }   
     } 

     return output; 
    } 

}); 
</script> 
</body> 
</html>