-2

这是问题所在。我从后端得到一个字符串,想用大写替换两个字母。下面是代码:

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”。请告诉如何做到这一点。帮助!

4

1 回答 1

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)?)

于 2013-06-17T05:45:53.080 回答