我正在嘗試獲取給定的字串并用字符替換該字串中的給定數字。具體來說:
- 5 替換為“S”
- 1 替換為“我”
- 0 將替換為“O”
(這是一個Kata 練習)
我寫了一個函式,它應該:
- 獲取字串并將其轉換為陣列
- 遍歷陣列
- 使用 .replace() 將上述數字的每個實體替換為適當的替換
- 回傳連接的字串。
我的代碼如下所示
Function correct(string) {
let array = string.split('')
for (let i = 0; i < array.length; i ) {
array[i].replace('5', 'S')
array[i].replace('0', 'O')
array[i].replace('1', 'I')
}
return array.join('');
}
該函式完全按照最初提供的方式回傳字串,保持不變。.replace()我懷疑我的問題在于我在回圈中使用該方法的方式,或宣告的索引位置。
uj5u.com熱心網友回復:
String.prototype.replace回傳一個新字串,并且不會改變執行它的變數。這就是為什么您需要在某處分配替換結果的原因。
要修復您的代碼,只需在每次替換時執行以下操作:
array[i] = array[i].replace('5', 'S');
注1:因為array[i]總是一個字符,所以不需要 in replace,因為你可以像這樣比較:
if (array[i] === '5') {
array[i] = 'S';
}
或單線:
array[i] = array[i] === '5' ? 'S' : array[i];
注 2:for替換回圈不是干凈的代碼。JavaScript 非常靈活,并為該問題提供了更好的解決方案。例如。String.prototype.replaceAll.
uj5u.com熱心網友回復:
試試這個:
const inputStr = 'AB5DE0G1H';
function correct(string) {
return string.replaceAll('5', 'S').replaceAll('0', 'O').replaceAll('1', 'l')
}
console.log(correct(inputStr));
uj5u.com熱心網友回復:
您可以replace()像這樣根據您的 key=>value 使用簡單的正則運算式,
const key_to_replace = {
'5': 'S',
'1': 'I',
'0': 'O'
}
const correct = (str) =>
str.replace(/./g, (m) => key_to_replace[m] ?? m);
console.log(correct("this 5is a0 test1 with 55abc"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/488456.html
標籤:javascript 数组 for循环 代替
上一篇:在回圈中迭代地構建資料框
下一篇:在兩個資料幀之間查找
