2011-05-22 27 views
0

好的,我有一个函数,检查一个字母是大写,并返回'真'或'假'值。程序检查大写字母字符串

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

现在我想检查一串字符,例如'AdfdfZklfksPaabcWsgdf',在程序遇到大写字母后,它会在这封信之后的所有小写字母上执行函数decryptWord,直到下一个大写字母为止。功能decryptWord适用于单个词罚款我只是不能得到它一个以上的工作;(

function decryptMessage(cipherText, indexCharacter, plainAlphabet, cipherAlphabet) 
    { 
     for (var count = 0, count < cipherText.length; count++) 
        { 
        if (isUpperCase(cipherText.charAt(count))) 
        { 
         decryptWord(cipherText, indexCharacter, plainAlphabet, cipherAlphabet) 
        } 
        else //i dont know what to do next 

        } 

你能告诉我,如果我在正确的方向我要去

+3

我不能肯定,如果这是你的问题,实际上相关性,但在你的代码已经有语法错误。将''for''循环的括号中的'''改为';'。 – DavidJCobb 2011-05-22 19:30:12

+0

您显示的代码会在每次检测到大写字符时使用_full_ cipherText调用'decryptWord()'。我想阿尔贝蒂的磁盘(对吧?)这需要逐字解密。 – 2011-05-22 20:52:17

回答

1

isUpperCase函数返回false?一个空格字符,所以代码将空格字符和小写字符相同,这可能是为什么它在多个单词上划线,而不是单个单词划线。

而不是处理大写和小写字母,为什么不输入split输入non-word characters?有点像硫s:

var words = cipherText.split(/\W/), // \W means non-word characters 
    numWords = words.length; 

for (var i=0; i<numWords; i++) 
{ 
    decryptWord(words[i]); 
} 
+0

作为输入,我将有一串字符,例如“AcdgsFsgRsi”每个大写字母表示新单词的开始。它也是一个解密信号字符,用于函数解密字。我需要做的就是分别在每个字母块上执行函数解密字。 “Acdgs”“Fsg”“Rsi” – Mark 2011-05-22 19:47:30

+0

好吧,那么你会分裂为[@Andy建议](http://stackoverflow.com/questions/6090182/program-checking-string-of-characters-for-capital - 字母/ 6090350#6090350)。 – 2011-05-22 20:00:09

0

我会推荐在decryptMessage函数中使用两个变量。第一个变量last_caps将存储以前大写字母的索引。第二个变量是count,它的工作原理与它已经很相似。这使您可以知道以前的大写字母在哪里,因此当您找到下一个大写字母时,可以在它们之间使用小写字母decryptWord

for循环

  • 如果字符的迭代索引count是大写的,则:
    • 如果count - last_caps > 1,则:
      • 使用decryptWord解密子开始last_caps并结束于count。根据需要操纵值以包含/排除大写字母。
    • count覆盖last_caps。 (last_caps = countfor迭代
  • 结束。
10

您是否考虑过在每个大写字符之前分割的正则表达式?例如

"AdfdfZklfksPaabcWsgdf".split(/(?=[A-Z])/); 

结果:

["Adfdf", "Zklfks", "Paabc", "Wsgdf"] 

这种方式,你可以一次管理一个 “字”;每个字母的第一个字母总是大写字母,其余都是小写字母。

0

列是字符串的数组和充分离开的情况下,如大写或小写主叫

function cipherText(columns) { 
for (var i = 0; i < columns.length; i++) { 
    if (!isAnyCase(columns[i])) { 
     columns[i] = columns[i].split(/(?=[A-Z])/).join(" "); 
    } 
} 
return columns; 
} 
function isAnyCase(text) 
{ 

    return (text == text.toUpperCase() || text == text.toLowerCase()); 
} 

功能

var columns = cipherText(arr); 
0

JavaScript函数来拆分对大写字母:

String.prototype.splitForCapitalLetters = function() { 
    var string = this; 
    if (string.length) { 
     string = string.split(/(?=[A-Z])/); 
    } 
    return string; 
} 

致电:

"AnyString".splitForCapitalLetters(); 

结果:

["Any", "String"] 
相关问题