簡體   English   中英

如何正確為IBAN數組添加空格

[英]How to add whitespace for array of IBAN properly

我想問一個關於正則表達式的問題。

我有一組IBAN。

例如["DE46700202700663820656", "DE07860700240455474700"]

我想在每個4個字符之間添加空格。

例如"DE46 7002 0270 0663 8206 56"

目前,我使用此正則表達式。

String(this.props.invoiceData.iban).replace(/(.{4})/g, '$1 ').split(',')

它可以添加空格,但是正則表達式不會針對第二個IBAN重新啟動,並且第二個IBAN被銷毀。

例如["DE46 7002 0270 0663 8206 56", "D E078 6070 0240 4554 7470 0"]

如何顯示兩個具有適當空格的IBAN,如下所示?

例如["DE46 7002 0270 0663 8206 56", "DE07 8607 0024 0455 4747 00"]

它可以添加空格,但是正則表達式不會針對第二個IBAN重新啟動,並且第二個IBAN被銷毀。

這是因為正則表達式保持狀態。 要么:

  1. 每次創建它,或者

  2. 在使用前將lastIndex設置為0

這是#1:

 var ibans = ["DE46700202700663820656", "DE07860700240455474700"]; ibans = ibans.map(function(iban) { return iban.replace(/(.{4})/g, '$1 '); }); console.log(ibans); 

除非您使用的是古老的 JavaScript引擎,而這個引擎的問題是每次都不重新創建文字正則表達式(我們說的是Firefox 3.0x或更高版本),否則應該沒問題。

這里是#2:

 var rex = /(.{4})/g; var ibans = ["DE46700202700663820656", "DE07860700240455474700"]; ibans = ibans.map(function(iban) { rex.lastIndex = 0; return iban.replace(rex, '$1 '); }); console.log(ibans); 

顯然,如果可以使用ES2015 +箭頭功能,則兩者都可以縮短。

您可以使用.map()這樣嘗試:

 var a = ["DE46700202700663820656", "DE07860700240455474700"]; var b = a.map(i => i.replace(/(.{4})/g, '$1 ')); console.log(b) 

暫無
暫無

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

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