7

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

例如

var testString = 'heLLoWorld';

应该

'HEllOwORLD' 

转换后。

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

如果使用正则表达式实现这样的结果,我会更好。

谢谢。

4

4 回答 4

3

这是一个正则表达式解决方案,它利用了大写和小写字母的不同之处在于对应于十进制 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;

于 2015-11-22T04:13:01.993 回答
2

这是一个想法:

function flipCase(str) {
  return str.split('').reduce(function(str, char) {
    return str + (char.toLowerCase() === char
      ? char.toUpperCase()
      : char.toLowerCase());
  }, '');
}
于 2015-11-22T03:41:54.910 回答
1

这是 RegEx 的一个想法

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/

于 2015-11-22T03:48:30.857 回答
0
testString.split('').map(function(c) {
  var f = 'toUpperCase';
  if(c === c.toUpperCase()) {f = 'toLowerCase';}
  return c[f]();
}).join('');
于 2015-11-22T03:43:51.553 回答