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

问题描述

| 我想知道在C#中是否有任何方法在遇到第一个数字之前都将字符串的所有内容都取出来。例:
string myString = \"USD3,000\";
myString = SomeMethod(myString,[someparameters]);
myString -> \"3,000\"
    

解决方法

不是内置的,但是您可以使用正则表达式或
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);
    }
}
    ,我不认为有任何内置的字符串方法可以做到这一点。但是,您可以调整以下文章中给出的代码,并对其进行修改以实现所需的功能: 在C#中确定字符串是否以数字开头然后获取所有后续数字直到第一个非数字字符的最有效方法是什么?     ,您可以使用正则表达式来做到这一点。
string myString = \"USD3,000\";
Regex reg = new Regex(\"[A-Za-z]\");
myString = reg.Replace(myString,\"\");
    ,
    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个小数位。