2012-09-05 60 views
1

確定我想要做的有以下爲大寫某些字符指數在字符串中的Javascript

$(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 
}); 

一個JScript和您可能會看到它運行在這裏

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

現在我想什麼

有提供主題字符串和數組。

主題字符串是要處理的字符串,數組包含的數字值將表示字符串中的字符索引大寫。

我錯過了一些與我的腳本,這就是爲什麼我得到不理想的結果?

+0

? – Sunny

回答

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 
}); 

+0

哦,我的眼睛錯過了!謝謝^^ –

+0

不客氣:) – gideon

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件的事情,我錯了,請參閱:

  1. 無需split的海峽,你可以遍歷它正常。

  2. 您錯誤地得到了​​。從jquery api for inArray

的$ .inArray()方法,下面的代碼片段類似於JavaScript的原生.indexOf()方法,它返回-1時>它沒有找到一個匹配。如果陣列中的第一個元素匹配值,$ .inArray()返回0

所以,inArray是返回-1,它沒有找到索引,你if聲明正在逐步成爲現實,因此,你得到的結果是'PoST'。

1

我想你想POST重新寫爲

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/

相關問題