簡體   English   中英

JavaScript,正則表達式,在字符串中包含的所有數字前添加零

[英]JavaScript, Regex, add leading zero to ALL number contained in string

這個Perl腳本是我要在JavaScript中實現的( 源代碼 ):

s/([0-9]+)/sprintf('%04d',$1)/ge;

顯然sprintf在JavaScript中不可用,但是我知道您可以構建一個直接處理關注數量的函數,但是就我而言,我有一個長字符串,其中可能包含多個數字以將字符串轉換為: abc8 23 123到: abc000008 000023 000123 (以6位數字為例)。

因此,這要么是我沒有得到的巧妙的正則表達式,要么是找到某種方法將長字符串拆分成由不同的字符串和數字組成的數組,並且僅對數字進行逐一處理。

我真的想避免使用后一種方法,因為1)在這種情況下,速度是一個問題,並且2)在正確的位置分割字符串所涉及的正則表達式似乎比此時添加前導零更難。

最后,使用JavaScript的正則表達式還有其他方法嗎?

您可以使用正則表達式查找數字,並將其替換為函數中的值:

s = s.replace(/\d+/g, function(m){
  return "00000".substr(m.length - 1) + m;
});

演示: http//jsfiddle.net/Guffa/sEUHY/

http://jsfiddle.net/hHfUC/1/

正則表達式非常簡單,只需將修補的數字傳遞給函數,然后將修改后的匹配項作為替換返回。

"abc8 23 123".replace(/\d+/g,function(x){ return zeroFill(parseInt(x),6) })

調zeroFill功能

function zeroFill( number, width ){
  if ( number.toString().length >= width )
    return number;
  return ( new Array( width ).join( '0' ) + number.toString() ).substr( -width );
}

還是yanno

("0000"+var).slice(-4); // Normal old JS `0000${var}`.slice(-4); // Sexier JS

第一個求值將變量var強制為字符串文字,在其前加上n 0(因此對於123的值,我們以"0000123" ,然后從字符串末尾開始的切片(負修飾符)向后計數n字符(例如“ 000 0123 ”或“ 0123”)。

這里最可愛的部分是我可以定義一個全局常量( const ZedsPadBabyZedsPad='00000000000000'; ),然后將其用於幾乎所有典型的填充應用程序,從5位圖像編號(img00011.jpg)到至今(02 / (01/04)至(軍事)時間:(07:00)。

不想為0? s'cool。 寶貝,STRING。 `WhatACROCK${'you'}`.slice(-4) // 'ROCKyou'

暫無
暫無

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

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