从字符串中获取数字

本文关键字:数字 获取 字符串 | 更新日期: 2023-09-27 18:00:49

我知道有人问过这个问题,但我没有找到适合我的解决方案,我是 C# 的新手。

我有图像名称如下:

propimage22997_1.jpg/propimage229927_1.jpg等。

我需要数字22997所以从字符9开始,到_结束。

从字符串中获取数字

由于这是一个文件名,请使用Path类。然后可以使用 LINQ:

string fileName = "propimage22997_1.jpg";
string fileNameOnly = Path.GetFileNameWithoutExtension(fileName);
string token = fileNameOnly.Remove(fileNameOnly.LastIndexOf('_'));
string number =  new string(token.SkipWhile(Char.IsLetter).ToArray()); //22997

或者跳过非数字字符:

number = new string(token.SkipWhile(c=> !Char.IsDigit(c)).ToArray());

如果您需要它作为int而不是string请使用int.TryParse(如果格式可能无效(或int.Parse

int num = int.Parse(number);

你可以这样做:

string test = "propimage22997_1.jpg";
string number = Regex.Match(test,"'d+").Value;
我现在

不在带有Visual Studio的PC前,但是这样的事情应该可以工作:

var numbers = Regex.Split(yourImageName, @"^'d");

这应该返回一个字符串数组,其中包含在其中找到的数字。然后,您可以检查数组(数字(是否为空,如果不是,请使用它。

    private static int GetNumber(string sz)
    {
        string szFileName = sz; //"propimage22997_1.jpg";
        int index = 0;
        int Number = 0;
        index = szFileName.IndexOf('_');
        Number = Convert.ToInt32(szFileName.Substring(9, (szFileName.Length - index - 1)));
         return Number;
    }
}