2016-10-22 5 views

Antwort

3

Sie über jedes Zeichen laufen konnte, und dann verdeckte in Kleinbuchstaben, wenn sie in Großbuchstaben ist, in Großbuchstaben, wenn sie in Klein ist oder es zu nehmen, wie, wenn es weder ist (wenn es ein Komma, Doppelpunkt, usw.):

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

Siehe auch diese Antwort für eine etwas fortschrittlichere Lösung: http://StackOverflow.com/a/38703925/1743938 –

+0

Es wird im Allgemeinen nicht in Betracht gezogen, eine Zeichenfolge direkt zu mutieren (indem auf ihren Index zugegriffen wird). Es wird normalerweise bevorzugt, es in ein Array zu konvertieren (mit .split() ohne Parameter), dann über das Array iterieren und die Zeichenfolge mit .join() wieder zusammenbauen. Nur als eine Idee. –

0

Eine Funktion, die dies für Sie tun:

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

Für mich führt diese Funktion zu TypeErrors. Hast du es schon getestet? –

+0

Ja, habe ich, ich hatte nur einen Tippfehler drin. 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

können Sie versuchen, diese einfache Lösung 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> 
Verwandte Themen