2

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

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

4 回答 4

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);
    }
}
于 2011-05-26T11:42:21.993 回答
1

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

C# 中确定字符串是否以数字开头然后获取所有后续数字直到第一个非数字字符的最有效方法是什么?

于 2011-05-26T11:42:25.437 回答
0

您可以使用正则表达式来做到这一点。

string myString = "USD3,000";
Regex reg = new Regex("[A-Za-z]");
myString = reg.Replace(myString, "");
于 2011-05-26T11:45:05.310 回答
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 个小数位。

于 2011-05-26T11:58:21.020 回答