簡體   English   中英

JavaScript中的正則表達式如何用字母替換數字?

[英]How to replace numbers with letters with regular expressions in JavaScript?

我有一串這樣的數字和字母:

let cad = "123941A120"

我需要用這些替換來轉換它:A = 10, B = 11, C = 12, ..., Z = 35。例如,上面的字符串將導致以下結果,將A替換為1012394110120

另一個例子:

Input:  158A52C3
Output: 1581052123

您要做的是將每個數字轉換為以 10 為基數。由於每個數字都來自 0、1、...、8、9、A、B、...、Y、Z 范圍,因此您正在處理一個基數-36 字符串。 因此,可以使用parseInt

 const convertBase36DigitsToBase10 = (input) => Array.from(input, (digit) => { const convertedDigit = parseInt(digit, 36); return (isNaN(convertedDigit)? digit: String(convertedDigit)); }).join(""); console.log(convertBase36DigitsToBase10("158A52C3")); // "1581052123" console.log(convertBase36DigitsToBase10("Hello, world;")), // "1714212124, 3224272113!"


如果您真的想堅持使用正則表達式, xdhmoore 的答案是一個很好的起點。

你可以做:

 const arr = [ { A: 10 }, { B: 11 }, { C: 12 }, //... ] const input = '158A52C3' const output = arr.reduce((a, c) => { const [[k, v]] = Object.entries(c) return a.replace(new RegExp(k, 'g'), v) }, input) console.log(output)

這樣做無需 map 所有字母代碼,假設相鄰字母具有相鄰代碼......

 result = "158A52c3".replaceAll(/[AZ]/ig, (c) => { offset = 10; return c.toUpperCase().charCodeAt(0) - "A".charCodeAt(0) + offset; }) console.log(result);

您可以執行以下操作:

const letters = {
'A':10,
'B':11,
'C':12
}
let cad = '123941A120'
for(let L in letters){
cad = can.replace(L,letters[L])
}
console.log(cad)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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