javascript - 手动大写/小写解释

标签 javascript

我在 AngularJS 源代码中找到了以下代码,但不知道它是如何工作的:

"this is it.".replace(/[a-z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) & ~32);})

将输出这就是它。

我特别不明白 ch.charCodeAt(0) & ~32 部分以及它如何生成大写字母。谁能给我解释一下其中的逻辑吗?

完整代码

var manualUppercase = function(s) {
  return isString(s)
      ? s.replace(/[a-z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) & ~32);})
  : s;
};

最佳答案

表达式~32采用值32并翻转每一位,给出如下的位模式:11011111

大写字母的 ASCII 值从值 65 开始,而小写字母的 ASCII 值从 97 开始。区别在于位 5 或 32。

因此,如果您使用 a~32 执行按位 AND,则第 5 位将被清除,结果将为 A.

注意:这仅适用于 ASCII 字母字符。对于超出该范围的 UTF-8,它会严重失败。

关于javascript - 手动大写/小写解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25149928/

相关文章:

javascript - 是否可以使用 JavasScript 确定 GeoJSON 点是否在 GeoJSON 多边形内?

JavaScript 如何让图像在鼠标悬停时改变颜色?

javascript - 如果显示元素,则添加 css 属性

javascript - 如何使用 jQuery 检查是否存在具有特定名称 attr 的输入

javascript - 如何为网页设计中几乎所有常见的东西制作通用的可重用 css?

javascript - jquery 图像 slider 在 ie8 中不起作用

javascript - AngularJS - 使用 ng Repeat 单独显示 div

c# - 确定当前打开的页面是否是在新选项卡中打开的父页面的副本

javascript - 在给定日期上添加 1 天

javascript - node.js:雅虎天气的 jQuery 插件不打印数据