从字符串中获取数字

时间:2014-04-29 12:02:24

标签: c#

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

我的图像名称如下:

propimage22997_1.jpg/propimage229927_1.jpg等。

我需要号码22997,所以从char 9开始,到_结束。

4 个答案:

答案 0 :(得分:2)

因为这是一个文件名,所以使用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

或跳过不是digits的字符:

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

如果您需要int代替string使用int.TryParse(如果格式无效)或int.Parse

int num = int.Parse(number);

答案 1 :(得分:0)

你可以这样做:

string test = "propimage22997_1.jpg";
string number = Regex.Match(test,"\d+").Value;

答案 2 :(得分:0)

我现在不在带有visual studio的电脑前,但这样的事情应该有效:

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

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

答案 3 :(得分:0)

    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;

    }
}