2016-10-22 1 views

Répondre

3

Vous pouvez exécuter sur chaque personnage, puis il covert en minuscules si elle est en majuscules, en majuscules si elle est en minuscule ou prendre tout comme si elle est ni (si elle est une virgule, deux-points, etc.):

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

Voir aussi cette réponse pour une solution un peu plus avancée: http://stackoverflow.com/a/38703925/1743938 –

+0

Il n'est généralement pas considéré de muter une chaîne directement (en accédant à son index). Il est généralement préférable de le convertir en tableau (en utilisant .split() sans paramètre), puis de parcourir le tableau et de réassembler la chaîne avec .join(). Juste comme une idée. –

0

Une fonction qui le fera pour vous:

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

Pour moi cette fonction se traduit par TypeErrors. L'avez-vous déjà testé? –

+0

Oui, je l'ai fait, j'ai juste eu une faute de frappe là-bas. 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

Vous pouvez essayer cette solution simple à l'aide 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>