将上字符转换为下字符,将下字符转换为上字符(反之亦然)

Convert upper chars to lower and lower to upper (vice versa)

我需要将某些字符串中的所有小写字母转换为大写字母,并将所有大写字母转换为小写字母。

例如

var testString = 'heLLoWorld';

应该是

'HEllOwORLD' 

转换后。

在不保存临时字符串的情况下,最优雅的实现方式是什么。

如果用正则表达式达到这样的效果就更好了

谢谢。

这是一个想法:

function flipCase(str) {
  return str.split('').reduce(function(str, char) {
    return str + (char.toLowerCase() === char
      ? char.toUpperCase()
      : char.toLowerCase());
  }, '');
}
testString.split('').map(function(c) {
  var f = 'toUpperCase';
  if(c === c.toUpperCase()) {f = 'toLowerCase';}
  return c[f]();
}).join('');

这是一个正则表达式的想法

var testString = 'heLLoWorld';
var newString  = '';
for(var i =0; i< testString.length; i++){
    if(/^[A-Z]/.test(testString[i])){
         newString+= testString[i].toLowerCase();
    } else {
         newString+= testString[i].toUpperCase();
    }
}

这里的工作示例http://jsfiddle.net/39khs/1413/

这是一个正则表达式的解决方案,它利用了大写字母和小写字母相差十进制 32 对应位这一事实:

var testString = 'heLLo World 123',
    output;

output= testString.replace(/([a-zA-Z])/g, function(a) {
          return String.fromCharCode(a.charCodeAt() ^ 32);
        })
  
document.body.innerHTML= output;