【问题标题】:How to substract 2 char in javascript to get a difference in ascii如何在javascript中减去2个字符以获得ascii的差异
【发布时间】:2013-03-31 20:57:41
【问题描述】:

alert('g' - 'a') 正在返回 Not a Number。 (“南”)。

但我希望得到 asciialert(103-97) 之间的区别 => alert(6)。因此要输出6

在 C 中,int i = 'g' - 'a' 将给出i = 6

如何在javascript中实现2个字符的减法? (很容易,如下所示)

alert("g".charCodeAt(0) - "a".charCodeAt(0)) 给出 6。

应用程序:我在国际象棋程序中使用它。

【问题讨论】:

  • 等等,.charCodeAt(0) 是“很努力”吗?
  • 就这样。就是这样
  • TL;DR: 'A'.charCodeAt(0) 反之:String.fromCharCode(65)
  • 另请注意:如果您批量执行此操作,使用 letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; letters[index] 会更快。

标签: javascript char


【解决方案1】:

按照您的意愿行事的唯一可行方法是您已经建议的方式:

alert('g'.charCodeAt(0) - 'a'.charCodeAt(0));

如您所知,这将在每种情况下从字符串的第 0 个元素中检索 ASCII 字符代码,并从第一个元素中减去第二个元素。

不幸的是,这是检索给定字符的 ASCII 代码的唯一方法,尽管使用函数会稍微简单一些,尽管考虑到 charCodeAt() 解决方案的简洁性/简单性并不是那么简单。

参考资料:

【讨论】:

    【解决方案2】:

    JavaScript 不将字符视为数字;它们是单字符串。所以减法运算符将计算Number('g') - Number('a')

    你应该这样做'g'.charCodeAt(0) - 'a'.charCodeAt(0)(没有更好的方法,但你可以将它包装在一个函数中)

    【讨论】:

      【解决方案3】:

      您可以为自己编写一个自定义函数。像这样的:

      function asciiDif(a,b) {
          return a.charCodeAt(0) - b.charCodeAt(0);
      }
      

      然后:

      alert(asciiDif('g','a'));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多