将TrimStart和TrimEnd组合为一个字符串

时间:2013-04-10 12:26:37

标签: c# regex string c#-4.0 trim

我有一个带有一些字母和数字的字符串。这里有一个例子:

OG000134W4.11

我必须修剪所有的第一个字母和第一个零来得到这个:

134W4.11

我还需要从他将要遇到的第一个字母中删除字符,最后再进行检索:

134

我知道我可以使用多个“修剪”来做到这一点,但我想知道是否有一种有效的方法可以做到这一点。

感谢。

3 个答案:

答案 0 :(得分:4)

如果您不想使用正则表达式,那么Linq就是您的朋友

    [Test]
    public void TrimTest()
    {
        var str = "OG000134W4.11";
        var ret = str.SkipWhile(x => char.IsLetter(x) || x == '0').TakeWhile(x => !char.IsLetter(x));
        Assert.AreEqual("134", ret);
    }

答案 1 :(得分:2)

这是我要使用的正则表达式

([1-9][0-9]*)[^1-9].*

以下是您可以尝试的一些C#代码

var input = "OG000134W4.11";
var result = new Regex(@"([1-9][0-9]*)[^1-9].*").Replace(input, "$1");

答案 2 :(得分:2)

using System;
using System.Text.RegularExpressions;

namespace regex
{
class MainClass
{
    public static void Main (string[] args)
    {
        string result = matchTest("OG000134W4.11");
        Console.WriteLine(result);
    }

    public static string matchTest (string input)
    {
        Regex rx = new Regex(@"([1-9][0-9]+)\w*[0-9]*\.[0-9]*");
        Match match = rx.Match(input);

        if (match.Success){
            return match.Groups[1].Value;
        }else{
            return string.Empty;
        }
    }
}
}