查找字符串中的大写字符

IT技术 javascript string
2021-02-26 07:57:58

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

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 函数真的,我只是被卡住了。

提前感谢您的建议:-)

伊西

4个回答

我不太确定我是否遵循,但您可以使用替换方法和正则表达式进行剥离

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

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

感谢您的助手,我学到的代码非常基础,for/while 循环、if/else、charAt 和 indexOf - 我知道它非常基础,但我就是无法解决。我有完整的 Html 文档,这会更有意义,但我真的不能把它贴在这里
2021-05-13 07:57:58

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

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
*/

编辑

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("This");
  • CallSomeFunctionWithTheNextWord("Is");
  • CallSomeFunctionWithTheNextWord("A");
  • CallSomeFunctionWithTheNextWord("Secret");
  • CallSomeFunctionWithTheNextWord("Text");

您可以使用正则表达式用更少的代码来做同样的事情,但是由于您说您正在学习非常基础的编程课程,因此该解决方案可能更合适。

如果这是您要查找的内容,请将我的回答标记为对您问题的回答。谢谢!:)
2021-04-30 07:57:58
因此,如果我有一个消息字符串,例如 KlptonPuuvTssi,它将返回 Klpton,然后该字符串将用于调用另一个函数,然后它将返回 Puuv,然后返回 Tssi。我正在做的课程非常基础——我们还没有学到像 toLower 这样的东西。我们所涵盖的只是 for/while 循环、charAt、indexOf、if 和 else :-)
2021-05-05 07:57:58
好的,现在我知道你想要做什么了。我将很快编辑我的答案。
2021-05-05 07:57:58
您好,感谢您的帮助。它是我想做的。基本上它会搜索第一个大写字符,然后返回它旁边的小写字符 - 字符串的这一部分将进入另一个将字母与另一个字母匹配的函数(我已经完成的那部分函数)。然后它将返回到原始消息,找到下一个大写字符并返回大写字母和旁边的小写字母,然后进入函数等等。
2021-05-08 07:57:58
你有长度而不是长度,它甚至不是有效的代码。
2021-05-09 07:57:58

使用Unicode 属性转义,特别是匹配大写的“Lu”通用属性类别有数字、标点符号、货币以及您可能感兴趣的任何其他字符类别的类别。

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

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