簡體   English   中英

使用正則表達式修剪最后幾位數

[英]using regex to trim off last few digits

使用正則表達式。 嘗試僅獲取數字的最后x位數字,並在必要時填充0

考慮以下輸入

1234
123
12
1

編輯:這些將單獨顯示為字符串值

我正在嘗試制作一個正則表達式(或多個正則表達式,理想情況下只是一個)

34
23
12
01

我對正則表達式和反向引用有點陌生,但仍然有些困惑。 關於在哪里看或可以做什么的任何想法?

謝謝

編輯為澄清:在.net的System.Text.Regex.Replace()函數中使用,這些值中的任何一個都可以作為輸入參數來使用。

編輯:謝謝大家的想法。 看來這不能在正則表達式中完成。 真是可悲。

如果必須使用正則表達式,則可以使用MatchEvaluator來完成,但是最好不要為此任務使用正則表達式。

由於您指出不使用正則表達式的解決方案是可以接受的,因此這是在不使用正則表達式的C#中執行此方法的一種方法:

void Run()
{
    string s ="1234";
    s = lastXDigits(s, 3);
    Console.WriteLine(s);
}

string lastXDigits(string s, int x)
{
    if (s.Length < x)
    {
        return s.PadLeft(x, '0');
    }
    else
    {
        return s.Substring(s.Length - x);
    }
}

每個輸入的結果:

234
123
012
001

根據您的其他問題,我假設您正在使用VB.Net。

您不需要正則表達式; 您可以只使用字符串操作:

Dim str As String

If str.Length > 2 Then str = str.Substring(str.Length - 2)
str = str.PadLeft(2, '0'c)

您可以做的是使用.substring(int start, int length) ,然后將字符串格式化為2個字符長,但是除非您指定語言,否則我們的雙手會束手無策。

這不會填充零,但似乎可以(在JavaScript中測試):

/[0-9]{1,2}$/

您使用什么語言? ..如果沒有正則表達式,這可能會更容易。

例如,以下是您如何在PHP中實現的方法:

$arr = array(1234,123,12,1);

foreach($arr as $num)
{
    echo '<br />'.str_pad(substr($num,-2), 2, "0", STR_PAD_LEFT);
}

暫無
暫無

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

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