如何反转字符串并将最后一个字母设置为小写

时间:2016-02-04 21:11:55

标签: javascript

我有这段代码,我希望得到一个输出反向字符串,并且只有在最后一个字母是大写的情况下,该字母才会被转换为小写,但它输出字符串的一部分,直到它命中第一个大写字母,而不是整个反转字符串,最后一个字母转换为小写,如果它不是小写的话。

非常感谢任何帮助!提前谢谢!

function stringrev(str) {
    var newString = "";
    for (var i = str.length - 1; i >= 0; i--) {

        // Add each character to newString
        newString = newString + str.charAt(i);
        if (newString.charAt(newString.length - 1) === newString.charAt(newString.length - 1).toUpperCase()) {
            return newString.slice(0, newString.length - 1) + newString.charAt(newString.length - 1).toLowerCase();
        }
    }

    return newString;
}

2 个答案:

答案 0 :(得分:3)

更简单一点

function stringrev(str) {
    var newString = "";
    for (var i = str.length; i--;)
        newString += i == str.length-1 ? str.charAt(i).toUpperCase() : str.charAt(i);
    return newString;
}

alert(stringrev("asdfasdf"));

https://jsfiddle.net/6xce1m7w/1/

澄清之后,我想你想要这个..

function stringrev(str) {
    // make thee last letter lower case
    str = str.substr(0, str.length-1) + str.charAt(str.length-1).toLowerCase();
    // reverse the order
    var newString = "";
    for (var i = str.length; i--;) newString += str.charAt(i);
    return newString;
}

alert(stringrev("asdfasdF"));

https://jsfiddle.net/v6qw2dyd/

答案 1 :(得分:1)

如果在字符串的开头/中间有一个大写字母,那么if语句中的return语句会过早地切断循环。我只是将它移到for循环之外。

long countOfItemsMatchingFilter = yourCollectionName.CountAsync(yourFilterName).Result;