在字符串中查找大写字符

Finding uppercase characters within a string

本文关键字:字符 查找 字符串      更新时间:2023-09-26

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

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
    }

上面的似乎不起作用,所以我甚至无法继续其余的代码。 谁能帮我确定我哪里出错了 - 无论如何我是否完全走错了方向,回读它我认为这真的没有多大意义?? 这是一个非常基本的代码,我只学习过,因为,而循环 - 如果和否则真的函数,我只是卡住了。

提前感谢您的建议:-)

伊西

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

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

在本例中,newmsg = 'MESSAGE'。

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

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");

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

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

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

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

我宁愿使用Array.reduce,如下所示:比如说,示例示例 = 'SampleStringAsFollow';

let capWord = [...sample].reduce((caps,char) => (char.match(/[A-Z]/)) ? caps + char : caps,'');
console.log(capWord); //SSAF

capWord 将是一个大写字符的字符串,还将处理字符串中可能包含特殊字符的边界情况。

请使用下面的代码获取句子的第一个大写字母:

演示代码

var str = 'i am a Web developer Student';
var sL = str.length;
var i = 0;
for (; i < sL; i++) {
    if (str.charAt(i) != " ") {
      if (str.charAt(i) === str.charAt(i).toUpperCase()){
        console.log(str.charAt(i));
      }
    }
}