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

发布于 2024-11-09 20:28:02 字数 194 浏览 0 评论 0原文

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

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

I would like to know whether there is any method in C# that takes out all the content of a string until the first number is encountered. Example:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

预谋 2024-11-16 20:28:02

不是内置的,但您可以使用正则表达式或 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);
    }
}

Not inbuilt, but you could just use either a regex, or IndexOfAny:

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

or

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);
    }
}
萌吟 2024-11-16 20:28:02

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

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

I don't think there are any built-in string methods to do that. However you can tweak the code given in the below post and modify it to achieve what you want:

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?

浪漫之都 2024-11-16 20:28:02

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

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

You can do it with Regular Expressions.

string myString = "USD3,000";
Regex reg = new Regex("[A-Za-z]");
myString = reg.Replace(myString, "");
和我恋爱吧 2024-11-16 20:28:02
    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 位小数。

    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);

Output:

3,000.00ss

Should match decimal and integer number with or without thousand separators and with or without maximum of 3 decimal places.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文