簡體   English   中英

如何在 for 循環中使用 Javascript .replace() 方法?

[英]How to use Javascript .replace() method within a for loop?

我正在嘗試獲取給定的字符串並用字符替換該字符串中的給定數字。 具體來說:

  • 5 替換為“S”
  • 1 替換為“我”
  • 0 將替換為“O”

(這是一個Kata 練習

我寫了一個函數,它應該:

  1. 獲取字符串並將其轉換為數組
  2. 遍歷數組
  3. 使用 .replace() 將上述數字的每個實例替換為適當的替換
  4. 返回連接的字符串。

我的代碼如下所示

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM