JavaScript - 如何将两个字符互换位置?

3

我有一个字符串,想把每个大写字母'I'替换成小写字母'i',同时把每个小写字母'i'替换成大写字母'I'。如果我分两步进行操作,它只会将其转换,然后再把它转换回之前的状态。那么如何一次性完成所有操作呢?

<html>
<head>
<script type="text/javascript">
function init() {
    text = document.getElementById('test');
    newtext = text.innerHTML.replace(/I/g, "i");
    newtext = newtext.replace(/i/g, "I");
    text.innerHTML = newtext;
}
</script>   
</head>

<body onload="init()">
<div id="test">
THIS IS SOME TEST 
</div>
</body>
</html>
1个回答

7
newtext = text.innerHTML.replace(/[iI]/g, function(l) {
  return l.toUpperCase() === l ?
    l.toLowerCase() : l.toUpperCase();
});

+1,并对代码进行了小的修改,使其仅适用于“i”和“I”。 - Paul
这段编程代码的意思是:“如果i等于I,则返回i”,虽然不太合理,但它能正常工作。 - Andy Lobel
@AndyLobel,对于每个字符,如果是 iI,函数将被调用。它将字母与其大写形式进行比较。因此,对于字母 itoUpperCase 将返回 I,它不等于 i,这意味着该函数将返回大写版本,反之亦然。 - James
@999 啊,我现在明白了,使用 return l == "i" ? "I" : "i"; 有什么问题吗? - Andy Lobel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接