2011-05-19 7 views
10

Estoy tratando de escribir una función que desencripta un mensaje cifrado que tiene letras mayúsculas (mostrando su nueva palabra) y minúsculas (que es la palabra misma). La función necesita buscar a través del mensaje cifrado todas las letras mayúsculas y luego regresa el carácter en mayúscula junto con la minúscula que lo sigue. Se me ha dado una función para llamar dentro de la función de descifrado:Encontrar caracteres en mayúsculas dentro de una cadena

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

estaba pensando que iba a buscar a través de la palabra para todos los caracteres en mayúsculas y asignar primero que a medida que una nueva cadena. Entonces podría hacer un loop que recogerá cada una de las letras en la nueva cadena y luego buscará los caracteres minúsculos que están a su lado en la cadena anterior.

Sin embargo, estoy completamente atascado en la primera parte, no puedo ni resolver el inglés estructurado.

El código es:

  • encryptMessage es una cadena que contiene caracteres en mayúsculas y minúsculas
  • indexCharacter se utiliza en una fecha posterior para otra función
  • upperAlphabet - alfabeto de caracteres en mayúscula - utilizó más tarde
  • lowerAlphabet - caracteres en minúsculas del alfabeto - usado más tarde

La función:

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 
    } 

Lo anterior simplemente no se parece a trabajar, por lo que incluso I Cant continuar con el resto del código. ¿Puede alguien ayudarme a identificar dónde me he equivocado? ¿De todos modos, me he equivocado de dirección con esto, leyéndolo de nuevo? No creo que realmente tenga mucho sentido. Es un código muy básico, solo lo he aprendido, porque, mientras que los bucles, si las funciones realmente funcionan, estoy tan bloqueado.

gracias de antemano por su consejo :-)

Issy

Respuesta

5

EDITAR

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

se hicieron las siguientes llamadas:

  • CallSomeFunctionWithTheNextWord ("Este");
  • CallSomeFunctionWithTheNextWord ("Is");
  • CallSomeFunctionWithTheNextWord ("A");
  • CallSomeFunctionWithTheNextWord ("Secreto");
  • CallSomeFunctionWithTheNextWord ("Texto");

Puede hacer lo mismo con mucho menos código utilizando expresiones regulares, pero como dijo que está tomando un curso básico de programación, esta solución podría ser más apropiada.

+0

Hola gracias por su ayuda. Es algo así como lo que quería hacer. Básicamente buscará el primer carácter en mayúscula y luego devolverá los caracteres en minúscula al lado - esta parte de la cadena pasará a otra función que concuerde con las letras de otro alfabeto (esa parte de la función que he hecho). Luego volverá al mensaje original, encontrará el siguiente carácter en mayúscula y devolverá la letra mayúscula con las letras minúsculas al lado, esto luego irá a la función y así sucesivamente. – user753420

+0

Así que si tengo una cadena de mensaje como KlptonPuuvTssi devolvería Klpton, que luego se usaría para llamar a otra función, luego devolvería Puuv y luego Tssi. El curso que estoy haciendo es muy básico: no hemos aprendido cosas como bajar de potencia. Todo lo que hemos cubierto es para/while loops, charAt, indexOf, if y else :-) – user753420

+0

Bien, ahora tengo lo que quieres hacer. Editaré mi respuesta en breve. – Christian

13

No estoy muy seguro de entender, pero se puede quitar utilizando el método de sustituir y expresiones regulares

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

En este caso, newmsg = 'mensaje'.

+0

Gracias por su asistente, el código que he aprendido es muy muy básico, para/while loops, if/else, charAt e indexOf - Sé que es muy básico, pero simplemente no puedo trabajar fuera. Tengo el documento completo HTML que tendría más sentido, pero realmente no puedo publicarlo aquí – user753420

2

Una condición simple para el control de caracteres en mayúsculas de una cadena sería ...

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