在字符串Javascript中给UpperCase某些char-index

时间:2012-09-05 09:01:10

标签: javascript string split

好吧我想要下面有一个jscript

$(document).ready(function(){
    var str = 'post'; //the subject string
    var arr =[0,2]; //to uppercase character index 0 and 2

    str = str.split("");
    for(var i = 0; i < str.length; i++){
        if($.inArray(i,arr)){
            str[i] = str[i].toUpperCase();
        }
    }
    str = str.join('');
    alert(str);
    //the result must be PoSt
});

你可能会看到它在这里运行

http://jsfiddle.net/laupkram/WfUUp/     

现在我想要的是提供主题字符串和数组。

主题字符串是要处理的字符串,数组包含的数字值将表示字符串中的字符索引为大写。

我是否因为我的剧本而错过了什么,这就是为什么我得到了不可取的结果?

4 个答案:

答案 0 :(得分:2)

$(document).ready(function() {
    var str = 'post'; //the subject string
    var arr = [0, 2]; //to uppercase character index 0 and 2
    str = str.split("");
    for (var i = 0; i < arr.length; i++) {
        if (str[arr[i]]) {
            str[arr[i]] = str[arr[i]].toUpperCase();
        }
    }
    str = str.join('');
    alert(str);
    //the result must be PoSt
});

答案 1 :(得分:2)

查看$.inArray的文档。它返回找到的元素的索引,如果找不到则返回-1

$(document).ready(function(){
    var str = 'post'; //the subject string
    var arr =[0,2]; //to uppercase character index 0 and 2

    str = str.split("");
    for(var i = 0; i < str.length; i++){
        //CHANGE HERE
        if($.inArray(i,arr) != -1){
                          //^^ change this
            str[i] = str[i].toUpperCase();
        }
    }
    str = str.join('');
    alert(str);
    //the result must be PoSt
});

答案 2 :(得分:1)

我在这里看错了2件事:

  1. 无需split str,您可以正常循环播放。

  2. 你错误地inArray()了。来自jquery api for inArray

  3. 的以下代码段
      

    $ .inArray()方法类似于JavaScript的原生.indexOf()方法,因为当&gt;时它返回-1。它找不到匹配。如果数组中的第一个元素与value匹配,则$ .inArray()返回0.

    因此,当inArray为未找到的索引返回-1时,您if语句变为true,因此您将结果显示为'PoST'。

答案 3 :(得分:1)

我会把它重写为

var str = 'post'; //the subject string
var arr =[0,2]; //to uppercase character index 0 and 2

str = str.split("");
for(i = 0; i < arr.length; i++){
  str[arr[i]]=str[arr[i]].toUpperCase();

}
str = str.join('');
alert(str);

http://jsfiddle.net/NBBgz/