Поиск заглавных символов в строке - PullRequest
14 голосов
/ 19 мая 2011

Я пытаюсь написать функцию, которая расшифровывает зашифрованное сообщение, которое состоит из заглавных букв (показывая новое слово) и строчных букв (это само слово). Функция должна искать в зашифрованном сообщении все заглавные буквы, а затем возвращает заглавные буквы и нижний регистр, следующий за ним. Мне дали функцию для вызова в функции расшифровки:

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
    }

Вышеприведенное, похоже, не работает, поэтому я даже не могу продолжить с остальным кодом Может ли кто-нибудь помочь мне определить, где я ошибся - все равно я совершенно ошибся в этом, читая его обратно, я не думаю, что это действительно имеет большой смысл ?? Это очень простой код, который я узнал только для циклов while - если и когда-то действительно работают, я просто оооочень застрял.

Заранее спасибо за совет: -)

Исси

Ответы [ 3 ]

17 голосов
/ 19 мая 2011

Я не слишком уверен, что следую, но вы можете удалить, используя метод замены и регулярные выражения

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

В этом случае newmsg = 'MESSAGE'.

5 голосов
/ 10 января 2017

Простое условие для проверки символов верхнего регистра в строке было бы ...

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
*/
5 голосов
/ 19 мая 2011

EDIT

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 ( "А");
  • CallSomeFunctionWithTheNextWord ( "Secret");
  • CallSomeFunctionWithTheNextWord ( "Текст");

Вы можете сделать то же самое с гораздо меньшим количеством кода, используя регулярные выражения, но, поскольку вы сказали, что проходите базовый курс по программированию, это решение может быть более подходящим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...