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

时间:2011-05-23 11:38:09

标签: javascript

我有一个函数可以检查给定字符是否为大写字母并返回false值为false:

function isUpperCase(aCharacter)
{
    return (aCharacter >= 'A') && (aCharacter <= 'Z');
}

现在我有一串字符,例如ThksAbcdEvat

我想编写一个函数来检查字符串中的每个字符,当遇到大写字母时,它将执行函数decryptW,但只能在一个字母块上直到下一个大写字母。

函数decryptW在单个单词上工作正常。所以我正在寻找的是'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, indexCharacter, plainAlphabet, cipherAlphabet);
                lastCapital = count;
            }
        }
    }
}

你能否告诉我,我是否接近我想达到的目标?任何帮助将非常感激。

2 个答案:

答案 0 :(得分:2)

可能正则表达可以帮助你

var re = /[A-Z][a-z]*/;
var s = 'ThksAbcdEvat';
s.replace(re, function(c){
    //do something with c
    return c;
});

答案 1 :(得分:1)

对于您所描述的内容(如果我理解正确),使用String.replace/split将完成在其大写字母上拆分字符串的工作:

'ThksAbcdEvat'.replace(/(.(?=[A-Z]))/g,'$1,').split(',');
 //=> Thks,Abcd,Evat

/(.(?=[A-Z]))/g表示:找到任意字符后跟大写字母A到Z,替换字母'$1,'表示:添加&#39;,&#39; (逗号)找到的角色。

之后,您可以运行循环以将decryptWord应用于数组中的每个单词(/g表示:全局,即对整个字符串执行此操作)。所以你的整个decryptMessage函数看起来像:

function decryptMessage(cipherText /*,... other params*/ ){
  var captalWords = cipherText.replace(/(.(?=[A-Z]))/g,'$1,').split(',');
  for (var i=0;i<capitalWords.length;i++){
   decryptWord(captalWords[i] /*,... other params*/ );
  }
}

我说,这里不需要复杂的while循环等。