2011-05-22 47 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"] 
相關問題