【问题标题】:How can I know if all chars are capitalized in a string? [closed]我怎么知道字符串中的所有字符是否都大写? [关闭]
【发布时间】:2013-07-01 22:48:59
【问题描述】:

如何确定字符串中的所有字母是否都大写?

喜欢:

var someVar = 'AAAAA DDSSS asssd';

或者只有 80% 以上的字母是大写的?

【问题讨论】:

  • 您对一般程序有何看法?
  • 一切都很简单,你在你的字符串上调用.toUpperCase(),看看它是否和原来的一样。对于“超过 80%”,您必须遍历字符,计算上面的字符并计算字符串长度的百分比……
  • 我可能有偏见,但我投票决定重新开放,因为这个问题似乎很清楚可以回答,而且对于 JavaScript 新手来说,“理解”潜在的问题/问题可能很困难。虽然我同意一些伪代码可能很容易显示,但我认为这个问题既不是“离题”(有一个明确的编程问题),也不是链接问题的重复(如果只是因为使用的不同语言)。

标签: javascript string


【解决方案1】:

我建议:

function capitalized (str) {
    var len = str.length,
        noCapitals = str.replace(/[a-z]/g,''),
        percent = (noCapitals.length/len) * 100;
    return percent;
}
var someVar = 'AAAAA DDSSS addes',
    p = capitalized(someVar);
console.log(p);

JS Fiddle demo.

或者,如果您希望获得固定精度:

function capitalized (str) {
    var len = str.length,
        noCapitals = str.replace(/[a-z]/g,''),
        percent = (noCapitals.length/len) * 100;
    return parseFloat(percent.toFixed(2));
}
var someVar = 'AAAAA DDSSS addes',
    p = capitalized(someVar);
console.log(p);

JS Fiddle demo.

而且稍微有用(因为我们还去掉了空格和小写字母),通过简单的检查来避免执行不必要的数学运算:

function capitalized (str) {
    var len = str.length,
        noCapitals = str.replace(/[a-z]\s/g,''),
        percent = noCapitals.length === 0 ? 100 : (noCapitals.length/len) * 100;
    return parseFloat(percent.toFixed(2));
}
var someVar = 'AAAAA    DDSSS',
    p = capitalized(someVar);
console.log(p);

JS Fiddle demo.

参考资料:

【讨论】:

  • 假定“大写”的 ASCII 定义,但对于这个问题可能是正确的。
  • 确实如此,老实说,我没有考虑过 ASCII 假设。我会考虑的,现在... =)
  • 这可能会更准确一些,并且适用于“字母”和“大写”的自定义定义:拉丁和西里尔字母的示例 — jsfiddle.net/m2pkd/5
  • 也许我们可以说服 ES6 实现 POSIX character classes 以保证特定于语言环境的词法正确性。 ;) 也可能不是。
  • @Kojiro:我仍在尝试找到一种方法来获得为 CSS 提议的 :last-of-class()/:nth-last-of-class() 选择器...TC39 似乎超出了我的访问范围,或者 ken。 =(
【解决方案2】:

你可以试试这样的

if (myString == myString.toUpperCase())
{
  alert('all upper case');
}

这将检查完整的大写字符串。如果你想检查 80%,那么你需要做一些数学逻辑,循环遍历每个字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-09
    • 2013-11-06
    • 2023-04-02
    • 1970-01-01
    • 2023-03-22
    • 2014-01-01
    • 2022-12-06
    • 1970-01-01
    相关资源
    最近更新 更多