是否有任何方法截断字符串的一部分,直到在C#中遇到第一个数字?

时间:2011-05-26 11:37:56

标签: c# string texttrimming

我想知道在遇到第一个数字之前,C#中是否有任何方法可以取出字符串的所有内容。例如:

string myString = "USD3,000";
myString = SomeMethod(myString, [someparameters]);
myString -> "3,000"

4 个答案:

答案 0 :(得分:7)

没有内置,但你可以使用正则表达式,或IndexOfAny

static void Main()
{
    string myString = "USD3,000";
    var match = Regex.Match(myString, @"[0-9].*");
    if(match.Success)
    {
        Console.WriteLine(match.Value);
    }
}

static readonly char[] numbers = "0123456789".ToCharArray();
static void Main()
{
    string myString = "USD3,000";
    int i = myString.IndexOfAny(numbers);
    if (i >= 0)
    {
        string s = myString.Substring(i);
        Console.WriteLine(s);
    }
}

答案 1 :(得分:1)

我认为没有任何内置字符串方法可以做到这一点。但是,您可以调整以下帖子中给出的代码并对其进行修改以达到您想要的效果:

What is the most efficient way in C# to determine if a string starts with a number and then get all following numbers up until the first non-numeric character?

答案 2 :(得分:0)

您可以使用正则表达式执行此操作。

string myString = "USD3,000";
Regex reg = new Regex("[A-Za-z]");
myString = reg.Replace(myString, "");

答案 3 :(得分:0)

    string str = "ddd3,000.00ss";

    string stripped = new Regex(@"(\d{1,3},(\d{3},)*\d{3}(\.\d{1,3})?|\d{1,3}(\.\d{3})?).*").Match(str).Value;

    Console.WriteLine(stripped);

输出:

3,000.00ss

应该使用或不使用千位分隔符匹配十进制和整数,并且最多包含3个小数位。