查找字符串中的大写字符

时间:2011-05-19 07:21:16

标签: javascript string

我正在尝试编写一个解密加密消息的函数,该消息具有大写字母(显示其新单词)和小写字符(这是单词本身)。该函数需要在加密消息中搜索所有大写字母,然后返回大写字符及其后面的小写字母。我有一个函数可以在decrypt函数中调用:

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

我想我会首先在单词中搜索所有大写字符并将其指定为新字符串。然后我可以执行while循环,它将获取新字符串中的每个字母,然后在旧字符串中搜索它旁边的小写字符。

但是,我完全陷入了第一部分 - 我甚至无法解决结构化英语问题。

代码是:

  • encryptMessage是一个包含大写和小写字符的字符串
  • indexCharacter以后用于其他功能
  • upperAlphabet - 大写字母字母 - 稍后使用
  • lowerAlphabet - 字母小写字符 - 稍后使用

功能:

function decryptMessage(encryptMessage, indexCharacter, upperAlphabet, lowerAlphabet)
{
    var letter
    var word = "";

    for (var count = 0; count < encryptMessage.length; count = count +1);
    {
        letter = encryptMessage.charAt(count) 
        if (isUpperCase(letter));
        { 
            word = word + letter;       
        }
        document.write(word); //this is just to test to see if it returns the uppercase - I would use the return word
    }

上面似乎没有用,所以我甚至无法继续使用其余的代码。任何人都可以帮我确定我哪里出错了 - 无论如何我完全走错了方向,读回来我不认为这真的很有道理?它是一个非常基本的代码,我只学习了,for while循环 - if和else函数真的,我只是soooooo卡住了。

提前感谢您的建议: - )

伊西

4 个答案:

答案 0 :(得分:17)

我不太确定我会遵循,但您可以使用替换方法和正则表达式

进行剥离
var str = 'MaEfSdsfSsdfsAdfssdGsdfEsdf';
var newmsg = str.replace(/[a-z]/g, '');
var old = str.replace(/[A-Z]/g, '');

在这种情况下,newmsg ='MESSAGE'。

答案 1 :(得分:5)

修改

String input = "ThisIsASecretText";    

for(int i = 0; i < input.Length; i++)
{
  if(isUpperCase(input.charAt(i))
  {
     String nextWord = String.Empty;

     for(int j = i; j < input.Length && !isUpperCase(input.charAt(j)); j++)
     {
       nextWord += input.charAt(j);
       i++;
     }

     CallSomeFunctionWithTheNextWord(nextWord);
  }
}

将进行以下调用:

  • CallSomeFunctionWithTheNextWord( “这”);
  • CallSomeFunctionWithTheNextWord( “是”);
  • CallSomeFunctionWithTheNextWord( “A”);
  • CallSomeFunctionWithTheNextWord( “秘密”);
  • CallSomeFunctionWithTheNextWord( “文本”);

使用正则表达式可以用更少的代码执行相同的操作,但由于您说您正在学习编程的基础课程,因此该解决方案可能更合适。

答案 2 :(得分:5)

检查字符串中大写字符的简单条件是......

var str = 'aBcDeFgHiJkLmN';
var sL = str.length;
var i = 0;
for (; i < sL; i++) {
    if (str.charAt(i) === str.charAt(i).toUpperCase()) {
        console.log('uppercase:',str.charAt(i));
    }
}

/*
    uppercase: B
    uppercase: D
    uppercase: F
    uppercase: H
    uppercase: J
    uppercase: L
    uppercase: N
*/

答案 3 :(得分:1)

使用Unicode property escapes,特别是“Lu”General Property Category,它匹配大写。有数字、标点符号、货币以及您可能感兴趣的任何其他字符类别。

在下面的示例中,“u”修饰符启用 Unicode 匹配。

"HeLlo WoRld".match(/\p{Lu}/gu) // [ 'H', 'L', 'W', 'R' ]