2013-05-22 97 views
1
var record = "HENRY|5|58|L581" 

如何修改我的上面:Javascript:如何替換兩個分隔符之間的文本?

record now equals "HENRY|Five|58|L581" 

我知道如何檢索索引的第一個「|」和第二個'|' ..我知道如何檢索數字'5'成一個字符串。

但我不知道如何真正取代5字五。

該部分| 5 |可能是從1-50

+0

如果它的任何數字,你還想有五個來取代它? –

+0

如果它是從1到50的任何數字,你應該首先有一個從'一'到'五十'的字符串數組,然後取這個數字,給它添加一個,並在該特定索引處找到字符串,獲取字符串並執行更換 –

回答

1

你可以這樣做,例如:

var record = "HENRY|5|58|L581" 

var recordArray = record.split("|"); 

for (var i = 0; i < recordArray.length; i++) { 
    if (recordArray[i] === "5") { 
      recordArray[i] = "FIVE"; 
    } 
} 
record = recordArray.join("|"); // or record = recordArray.toString(); 

這是你想達到的目的嗎?

UPDATE

如果你想要的任何號碼,您可以將它設置成一個函數:

function changeNumber(textVar, valueToChange, replaceText) { 

    var recordArray = textVar.split("|"); 

    for (var i = 0; i < recordArray.length; i++) { 
     if (recordArray[i] === valueToChange) { 
      recordArray[i] = replaceText; 
     } 
    } 
    return recordArray.join("|"); // or recordArray.toString(); 
} 

demo

+0

在你提出的建議之後,我會如何將它變成一個變量? recordChanged =「HENRY | five | 58 | L581」....像這樣 – Gast1

+0

這是如此接近,但變量不再是一個正常的變量,它是一個數組嗎?我怎樣才能讓數組重新返回一個常規的字符串變量? – Gast1

+0

@ Gast1看到**更新** – DaGLiMiOuX

2

喜歡的東西,任何號碼?

record = record.replace('|5|', '|FIVE|'); 

以下編輯:

要五取代任何號碼,你可以做

record = record.replace(/\|\d+\|/, '|FIVE|'); 

如果你想要的東西不同數量的(也許來代替你的用戶需要10時數是10),那麼你將不得不做一些工作:

record = record.replace(/\|\d+\|/, function(str) { 
    var number = parseInt(str,10); 
    return 'FIVE'; // here build a new string and return it 
}); 
+0

問題是有可能是另一個| 5 |在記錄的某個地方。我需要確保我更改| 5 |在字符串的開頭。 – Gast1

+0

這是在你編輯之前,你說要替換任何數字。 –

+2

@harsha OP編輯。現在我不知道他想要什麼。 –

0

我相信你不想取代任何號碼與「十一五」,要與代表數的實際字符串替換。

var repl = [0, 1, ....]; 
var to = ["zero", "one", ...]; 
var recordArray = record.split("|"); 

for (var i = 0; i < recordArray.length; i++) { 
recordArray[i] = to[indexOf(recordArray[i], repl)]; 
} 

finStr = recordArray.join("|"); 
相關問題