文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JS字符串竟然可以比大小?

2024-11-29 18:06

关注

大家好,我是杨成功。

最近在筹备面试,又开始被动刷编程题和算法题了。

昨天在做一个字符串变形的题目时,我发现英文字母竟然可以比大小!!比如这样:

'a' > 'b' // false
'a' < 'b' // true
'a' < 'B' // false

这是什么鬼?好奇心来了,我要搞懂它。

字符串比较的原理

通常情况下,数字比大小,就是按照数学中的值比较大小,没有疑问。

而在 JavaScript 中,字符串比较是基于字符的 Unicode 值来进行的。

我查了 26 个英文字母的 Unicode 码(大小写不同),发现它们的 Unicode 码是连续的,结果如下:

从上面的结果看,我们可以得出两个结论:

现在再看文章前面的比较题,就可以清晰的看到比较结果:

多字符如何比较?

当比较多字符的字符串时,JavaScript 会从左向右逐字符比较,直到找到不同的字符或到达一个字符串的末尾。

比如,要比较 'cbaa' 和 'cazz' 这两个字符串的大小,过程如下。

比较第一个字母的大小,即比较 c 和 c,结果相等,进入下一步。

比较第二个字母的大小,即比较 b 和 a,此时 b > a,停止比较。

因为 b > a,所以 cbaa > cazz,比较结束。

注意:如果你需要确保大小写不会影响比较结果,可以将字符串转换成统一的大小写形式再进行比较。

方法是使用 .toLowerCase() 或 .toUpperCase()。

可以做什么

基于以上特性,我们可以判断某个字母的大小写。

// 假设变量 n 是一个随机字母
if(n >= 97 && n <= 122) {
    console.log('小写字母')
}
if(n >= 65 && n <= 90) {
    console.log('大写字母')
}

在字符串变形题目中,需要将大写字母变为小写,小写字母变为大写,那么就可以使用上面的方法判断,并且转换大小写的。

当然,更简单的方法是直接使用转换函数,比如:

if(n == n.toLowerCase()) {
    // 小写,需要转换为大写
    n = n.toUpperCase()
}
if(n == n.toUpperCase()) {
    // 大写,需要转换为小写
    n = n.toLowerCase()
}

记住这个比较规则,下次遇到字符串比较的情况,别懵了。

来源:程序员成功内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯