使用正则表达式修剪最后几位数

时间:2010-07-16 19:53:18

标签: .net

使用正则表达式。试图只获得数字的最后x位数和必要的0填充

考虑以下输入

1234
123
12
1

编辑:这些将单独显示为字符串值

我正在尝试制作一个正则表达式(或几个正则表达式,理想情况下只是一个) 产量

34
23
12
01

我对正则表达式和反向引用有点新,但仍然有点笨拙。关于在哪里寻找或可以做什么的任何想法?

感谢

编辑澄清: 在.net的System.Text.Regex.Replace()函数中使用 这些值中的任何一个都可以作为输入参数。

编辑:感谢大家的想法。似乎这不能在正则表达式中完成。很伤心。

5 个答案:

答案 0 :(得分:1)

如果必须使用正则表达式,则可以在使用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

答案 1 :(得分:1)

根据您的其他问题,我假设您使用的是VB.Net。

你不需要正则表达式;你可以使用字符串操作:

Dim str As String

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

答案 2 :(得分:0)

你可以做的是使用.substring(int start, int length),然后将字符串格式化为2个字符长,但除非你指定语言,否则我们的手有点束缚。

答案 3 :(得分:0)

这不会填充零,但似乎工作(在JavaScript中测试):

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

答案 4 :(得分:0)

您使用的是哪种语言? ..如果没有正则表达式,这可能会更容易。

例如,继承人如何在PHP中完成它:

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

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