如何在字符串中将第二个字符从小写替换为大写

时间:2013-06-17 05:17:30

标签: jquery string

这是问题所在。我从后端获取一个字符串,并希望用大写替换两个字母。以下是代码:

var query = "WHERE account >= 23 || company != null;";
var slicedQuery = query.slice(7);

slicedQuery = slicedQuery.replace(slicedQuery.charAt(slicedQuery.lastIndexOf(";")), "");

var firstChar = slicedQuery.charAt(0);
slicedQuery = slicedQuery.replace(firstChar, firstChar.toUpperCase());

if(slicedQuery.indexOf("|") >= 0) {

    var charInCondition = slicedQuery.charAt(slicedQuery.indexOf("|") + 3);

    slicedQuery = slicedQuery.replace(charInCondition, charInCondition.toUpperCase());
}

帐户的“a”已正确替换为“A”。但公司的'c'并没有被取代。相反,Acconut中的'c'被'C'取代。请告诉我们如何做到这一点。救命啊!

1 个答案:

答案 0 :(得分:0)

问题

函数replace将仅替换第一个参数的第一个出现。您的代码正确识别它必须替换'c'(来自“公司”),但调用replace只会更改'c'的首次出现(在“帐户”中)。


解决方案

您需要使用以下代码替换if块中的代码:

var idx = slicedQuery.indexOf("|") + 3;
var charToReplace = slicedQuery.charAt(idx);
slicedQuery = slicedQuery.substring(0, idx)
              + slicedQuery.substring(idx).replace(
        charToReplace, charToReplace.toUpperCase());

(顺便说一句,你确定它应该是.slice(7)而不是.slice(6)吗?)