2016-10-22 8 views

ответ

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> 

 Смежные вопросы

  • Нет связанных вопросов^_^