2012-01-14 167 views
-1

爲什麼這只是對我而言不適用?替換字符串中的字符

<script type="text/javascript"> 
var gene="ATTAHATHHATTCGTA"; 
var i=0; 
for (;i<gene.lenth;i++) 
{ 
    if(gene[i]=='H') 
    gene[i]='G'; 
} 
</script> 

我使用替換更改如下

<script type="text/javascript"> 
var gene="ATTAHATHHATTCGTA"; 
var i=0; 
for (;i<gene.lenth;) 
{ 
    var pos=gene.replace("H","G"); 
    i+=pos; 
} 
</script> 

但我還是運氣不好。感謝您的任何幫助。

回答

2

String.replace方法用於更簡單地:

var gene="ATTAHATHHATTCGTA"; 
gene = gene.replace("H", "G", "g"); // The last "g" means "replace all occurrences" 

這麼簡單。

但是,這不適用於所有瀏覽器。爲了使便攜式,你必須指定的第一個參數爲正則表達式,像這樣:

var gene="ATTAHATHHATTCGTA"; 
gene = gene.replace(/H/g, "G"); // The /g means "replace all occurrences" 
+0

真棒,謝謝喬恩,我今天學到了新的克 – Mackintoast 2012-01-14 03:54:28

+0

而且還有一個拼寫錯誤: 「爲(; I 2012-01-14 03:56:04

+0

@Mackintoast:請檢查出我的編輯只是保存,關於正則表達式。 – Jon 2012-01-14 03:57:11

0

兩個功能有.length財產拼錯爲.lenth。但除了...

你的第一個功能不工作的原因是因爲不是所有的瀏覽器支持數組風格指數獲得單個字符字符串中,甚至對於做according to MDN的那些他們只支持訪問。

第二個函數不起作用的原因是因爲當您將一個字符串傳遞給.replace()時,它只會替換第一個實例,並將其放入循環中對此沒有幫助。

可以輕鬆實現使用regular expression作爲第一個參數.replace() function,在使用正則表達式,您可以指定其他參數,如全局替換(或者你可以把它一種不區分大小寫替換)同樣的事情:

gene = gene.replace(/H/g, "G"); 

如果由於某種原因,你真的要處理自己的性格去字符字符串中,你可以方便地與.split() method把它變成一個數組,然後當你完成重新打開它與.join() method字符串:

var gene="ATTAHATHHATTCGTA", 
    i, 
    geneArray = gene.split(""); 

for (i=0;i<geneArray.length;i++) 
{ 
    if(geneArray[i]=='H') 
    geneArray[i]='G'; 
} 
gene = geneArray.join(""); 

(很顯然,你不會那樣做的時候.replace()可以爲你做,但是這只是一個例子。)