【问题标题】:Testing for uppercase, why is toUppercase() alphanumeric in javascript? [closed]测试大写,为什么 toUppercase() 在javascript中是字母数字? [关闭]
【发布时间】:2014-10-10 21:07:14
【问题描述】:

如何隔离 toUpperCase() 以忽略数字 Live code

var data = 'LOL';
var data2 = '1 2 3 4';

if(data2 === data2.toUpperCase()) {
  document.write('hey');
}else {
  document.write('nope');
}

两者都会向文档写嘿!

为什么在 javascript 中 toUppercase() 认为数字是大写字母?测试大写而不是数字的最佳方法是什么?

【问题讨论】:

  • 我不明白你的问题。你期望输出是什么,为什么? '1 2 3 4'.toUpperCase() == '1 2 3 4',因为数字不是字母。
  • 您是否要检查字符串是否全部为大写字母?
  • 我有一堆测试说如果输入的值是大写而不是返回嘿。但是数字不是大写的,但是 toUppercase() 在数字上返回 true,就好像它们是大写的一样
  • @MatthewHarwood 数字没有大小写之类的东西,所以它们不会被改变大小写的函数所触及
  • @MatthewHarwood .toUpperCase() 函数不是测试;它返回一个字符串。

标签: javascript arrays uppercase


【解决方案1】:

为什么? the ECMA standard是这样定义的:

让 [the result] 是一个字符串,其中 L 的每个字符都是 Unicode [大写] 相当于 S 的对应字符或 实际 如果没有 Unicode [大写] 等价物,则 S 的对应字符 存在

(强调我的。)

【讨论】:

    【解决方案2】:

    toUpperCase() 仅用于大写字母。如果您要“大写”一个数字,那将是一个完全不同的字符。所以,如果你想大写“1, 2, 3”,它会变成“!,@,#”,这与“a,b,c”变成“A,B,C”完全不同

    另外,我可以补充一下,没有“大写数字”之类的东西

    同样的概念也适用于toLowerCase()

    【讨论】:

    • stackoverflow.com/questions/1027224/… 是的,这只是我从这个问题中发现的一种测试方法。我知道 toUpperCase() 用于大写的东西,但它也可以返回一个真假对吗?
    • 我可能在这里错了,但据我所知,JavaScript 中的 toUpperCase 函数不会返回任何内容。
    【解决方案3】:

    您可以使用正则表达式匹配来查看字符串是否包含所有大写字母:

      var uppercaseletters = /^[A-Z]+$/;  
      if(data2.match(uppercaseletters)) {  
        document.write('hey');
      }  else {  
        document.write('nope');
      }
    

    【讨论】:

    • 为什么 toUppercase() 是字母数字的?
    • @MatthewHarwood,返回大写版本。尽管我认为在这种情况下正则表达式匹配会更好,因为您正在检查它是否匹配所有大写字符,而不是将其与另一个字符串进行比较。
    猜你喜欢
    • 2013-06-25
    • 1970-01-01
    • 2010-11-04
    • 2012-10-11
    • 2019-08-08
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多