我正在尝试编写一个解密加密消息的函数,该消息具有大写字母(显示其新单词)和小写字符(这是单词本身)。该函数需要在加密消息中搜索所有大写字母,然后返回大写字符及其后面的小写字母。我有一个函数可以在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卡住了。
提前感谢您的建议: - )
伊西
答案 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);
}
}
将进行以下调用:
使用正则表达式可以用更少的代码执行相同的操作,但由于您说您正在学习编程的基础课程,因此该解决方案可能更合适。
答案 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' ]