while循环检查字符串中的大写字母

问题描述

| 我有一个检查给定字符是否为大写字母并返回false值的true的函数:
function isUpperCase(aCharacter)
{
    return (aCharacter >= \'A\') && (aCharacter <= \'Z\');
}
现在我有一个字符串,例如
ThksAbcdEvat
。 我想编写一个检查字符串中每个字符的函数,当它遇到大写字母时将执行函数
decryptW
,但仅在一个字母块上执行,直到下一个大写字母为止。 函数cryptineW在单个单词上正常工作。因此,我正在寻找的是在\'Thks \'\'Abcd \'\'Evat \'上执行功能'\ decryptW \'并返回3个单词。我目前所拥有的是:
function decryptMessage(cipherText,indexCharacter,plainAlphabet,cipherAlphabet)
{
    for (var count = 0,count < cipherText.length; count++)
    {
        while (isUpperCase(cipherText.charAt(count))
        {
            if (count - lastCapital > 1)
            {
                decryptWord(cipherText,cipherAlphabet);
                lastCapital = count;
            }
        }
    }
}
你能告诉我我是否接近我想要达到的目标吗?任何帮助将非常感激。     

解决方法

正则表达式可能会帮助您
var re = /[A-Z][a-z]*/;
var s = \'ThksAbcdEvat\';
s.replace(re,function(c){
    //do something with c
    return c;
});
    ,对于您所描述的内容(如果我理解正确的话),使用ѭ5可以完成将字符串拆分为大写的工作:
\'ThksAbcdEvat\'.replace(/(.(?=[A-Z]))/g,\'$1,\').split(\',\');
 //=> Thks,Abcd,Evat
/(.(?=[A-Z]))/g
的意思是:找到任何字符,后跟大写字母A到Z,而替换字词(
\'$1,\'
)的意思是:在找到的字符上加上\',\'(逗号)。 之后,您可以运行循环以将
decryptWord
应用于数组中的每个单词(
/g
表示:全局,即对整个字符串执行此操作)。因此,您的整个
decryptMessage
函数可能看起来像:
function decryptMessage(cipherText /*,... other params*/ ){
  var captalWords = cipherText.replace(/(.(?=[A-Z]))/g,\');
  for (var i=0;i<capitalWords.length;i++){
   decryptWord(captalWords[i] /*,... other params*/ );
  }
}
我会说,这里实际上不需要复杂的while循环等。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...