【问题标题】:How to detect number, uppercase, lowercase data in string using JavaScript?如何使用 JavaScript 检测字符串中的数字、大写、小写数据?
【发布时间】:2016-04-20 00:15:24
【问题描述】:

如何使用 JavaScript 检测字符串中的numberuppercaselowercase 数据?

为什么这段代码告诉我$#! 是大写/小写?

我怎样才能只检测到numberuppercaselowercase

https://jsfiddle.net/hqw12ov8/

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
var strings = 'abCD12$#!';
var i=0;
var character='';
while (i < strings.length){
    character = strings.charAt(i);
    if (!isNaN(character * 1)){
        alert('character is numric');
        alert(strings.charAt(i));
    }else{
        if (character == character.toUpperCase()) {
            alert ('upper case true');
            alert(strings.charAt(i));
        }
        if (character == character.toLowerCase()){
            alert ('lower case true');
            alert(strings.charAt(i));
        }
    }
    i++;
}
</script>

【问题讨论】:

  • 你认为大写是什么

标签: javascript uppercase lowercase


【解决方案1】:

在 JavaScript 中,toUpperCase() 仅适用于小写字母。其他大写字母和非字母字符(如 A、B、Y、Z、$、_ 等)保持不变。所以'$'.toUpperCase() 返回'$'toLowerCase() 也是如此。所以当character'$''#' 时,character==character.toUpperCase() 返回true

下面的代码应该做你想做的事。这里我用String.prototype.charCodeAt(index)检查每个字符的Unicode值。

var strings='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789($_)'; 
for(var i=0;i<strings.length;i++) 
{ 
var c=strings.charCodeAt(i); 
var s=strings.charAt(i); 
if(c>=48&&c<=57) 
//if(s.match(/[0-9]/))  
alert(s+' is Number'); 
else if(c>=97&&c<=122) 
 //else if(s.match(/[a-z]/))  
alert(s+' is Lower Case'); 
else if(c>=65&&c<=90) 
 //else if(s.match(/[A-Z]/))  
alert(s+' is Upper Case'); 
else 
alert(s+' is neither Number or Alphabet'); 
}

使用 cmets 中的行而不是它们之前的行来获得简单的 RegExp 支持。它还有助于删除var c=strings.charCodeAt(i);

【讨论】:

  • 使用这些字符代码范围似乎不如使用正则表达式直观。
  • 我本可以使用正则表达式。这段代码很容易理解。
【解决方案2】:

How can I test if a letter in a string is uppercase or lowercase using JavaScript?

这是您从正确获得原始代码的地方? 这是一个将从此 SO 中删除标点符号的版本

How can I strip all punctuation from a string in JavaScript using regex?

var strings = 'this iS a TeSt 523 Now!';
var punctuationless = strings.replace(/[.,\-\/#!$%\^&\*;:{}=\-_`~()]/g,"");
var finalString = punctuationless.replace(/\s{2,}/g," ");
var i=0;
var character='';
while (i <= strings.length){
    character = strings.charAt(i);
    if (!isNaN(character * 1)){
        alert('character is numeric ' + character);
    }else{
        if (character == character.toUpperCase()) {
            alert ('upper case true ' + character);
        }
        if (character == character.toLowerCase()){
            alert ('lower case true ' + character);
        }
    }
    i++;
}

我不知道您是否要在支票中包含这个标点符号,因为标点符号既不是大写也不是小写。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 2015-02-08
    • 1970-01-01
    相关资源
    最近更新 更多