在 javascript 上交换大小写

新手上路,请多包涵

我制作了一个改变大小写的脚本,但在文本上使用它的结果是完全相同的文本,没有任何变化。有人可以解释一下吗?

 var swapCase = function(letters){
    for(var i = 0; i<letters.length; i++){
        if(letters[i] === letters[i].toLowerCase()){
            letters[i] = letters[i].toUpperCase();
        }else {
            letters[i] = letters[i].toLowerCase();
        }
    }
   console.log(letters);
}

var text = 'So, today we have REALLY good day';

swapCase(text);

原文由 Akulko 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 274
2 个回答

正如 Ian 所说,您需要构建一个新字符串。

 var swapCase = function(letters){
    var newLetters = "";
    for(var i = 0; i<letters.length; i++){
        if(letters[i] === letters[i].toLowerCase()){
            newLetters += letters[i].toUpperCase();
        }else {
            newLetters += letters[i].toLowerCase();
        }
    }
    console.log(newLetters);
    return newLetters;
}

var text = 'So, today we have REALLY good day';

var swappedText = swapCase(text); // "sO, TODAY WE HAVE really GOOD DAY"

原文由 Fabricator 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用这个简单的解决方案。

 var text = 'So, today we have REALLY good day';

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

console.log(ans)

使用 ES6

 var text = 'So, today we have REALLY good day';

var ans = text.split('')
.map((c) =>
 c === c.toUpperCase()
 ? c.toLowerCase()
 : c.toUpperCase()
).join('')

console.log(ans)

原文由 Pranesh Ravi 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏