【问题标题】:Javascript string and character comparision [duplicate]Javascript字符串和字符比较[重复]
【发布时间】:2017-09-18 22:28:17
【问题描述】:

为什么'Mystery!' <= 'Z' 等于true'the' <= 'Z' 等于false 但两者都有 'Mystery!' >= 'A''the' >= 'A' 等于 true。这种比较是如何进行的?

【问题讨论】:

  • 因为'B' < 'a'。字符通常(在大多数系统上)按以下顺序排列:..., A, B, ..., Z, ... , a, b, c, ...
  • 这取决于字符的代码。事实上,比较的是符号的代码。
  • 比较两个操作数的小写版本。
  • @kindUser 只是关闭它,甚至没有阅读重复的候选人。多么典型。
  • @ibrahimmahrir “在大多数系统上”部分具有误导性。 JavaScript 总是对字符串使用 Unicode 字符集的 UTF-16 编码。 locale 可能因来源、用户和时间而异,但二进制比较运算符始终使用 UTF-16 字典顺序。

标签: javascript


【解决方案1】:

它正在比较字符串值的 UTF-16 代码。尝试与 charCodeAt 方法进行相同的比较,以了解这里发生了什么

'y'.charCodeAt() <= 'Z'.charCodeAt()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt

【讨论】:

    【解决方案2】:

    大写字母在小写字母之前。

    M = ascii 值 77
    Z = 90

    77 < 90
    

    t = 116
    Z = 90

    116 !< 90
    

    在此处查看更多信息:www.asciitable.com

    【讨论】:

    • JavaScript 不将 ASCII 用于内置文本数据类型。我不知道有什么语言可以。
    猜你喜欢
    • 2017-06-27
    • 2014-08-23
    • 2011-09-28
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 2018-07-09
    相关资源
    最近更新 更多