[英]How to use Javascript .replace() method within a for loop?
我正在嘗試獲取給定的字符串並用字符替換該字符串中的給定數字。 具體來說:
(這是一個Kata 練習)
我寫了一個函數,它應該:
我的代碼如下所示
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()
方法的方式,或者聲明的索引位置。
String.prototype.replace
返回一個新字符串,並且不會改變執行它的變量。 這就是為什么您需要在某處分配替換結果的原因。
要修復您的代碼,只需在每次替換時執行以下操作:
array[i] = array[i].replace('5', 'S');
注意 1:由於array[i]
始終是單個字符,因此不需要replace
,因為您可以像這樣進行比較:
if (array[i] === '5') {
array[i] = 'S';
}
或單線:
array[i] = array[i] === '5' ? 'S' : array[i];
注意 2: for
循環替換不是干凈的代碼。 JavaScript 非常靈活,並為該問題提供了更好的解決方案。 例如。 String.prototype.replaceAll
。
您可以像這樣根據您的 key=>value 使用簡單的正則表達式replace()
,
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"))
試試這個:
const inputStr = 'AB5DE0G1H'; function correct(string) { return string.replaceAll('5', 'S').replaceAll('0', 'O').replaceAll('1', 'l') } console.log(correct(inputStr));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.