程序检查大写字母的字符串

时间:2011-05-22 19:21:40

标签: javascript

好的,我有一个函数可以检查字母是否为大写,并返回'true'或'false'值。

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
        }
    }
}
你可以告诉我,我是否朝着正确的方向前进?

5 个答案:

答案 0 :(得分:10)

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

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

结果:

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

这样,您可以一次管理一个“单词”;每个的第一个字符总是大写的,其余的都是小写的。

答案 1 :(得分:1)

您的isUpperCase函数返回false作为空格字符,因此代码将空格字符和小写字符视为相同。这可能就是为什么它会抨击多个单词而不是单个单词。

为什么不split non-word characters上的输入,而不是处理大写和小写字母?像这样:

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

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

答案 2 :(得分:0)

我建议在decryptMessage函数中使用两个变量。第一个变量last_caps将存储前一个大写字母的索引。第二个变量是count,它的工作方式非常类似。这允许您知道上一个大写字母的位置,因此当您找到下一个大写字母时,您可以在它们之间的小写字母上使用decryptWord

for循环的迭代

  • 如果索引count处的字符为大写,则:
    • 如果count - last_caps > 1,那么:
      • 使用decryptWord解密从last_caps开始到count结束的子字符串。根据需要操纵值以包含/排除大写字母。
    • 使用last_caps覆盖count。 (last_caps = count
  • for迭代结束。

答案 3 :(得分: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);

答案 4 :(得分:0)

要在Capital Letter上拆分的JavaScript函数:

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

呼叫:

"AnyString".splitForCapitalLetters();

结果:

["Any", "String"]