我知道这个问题已被问到,但我没有找到适合我的解决方案,我是C#的新手。
我的图像名称如下:
propimage22997_1.jpg
或/propimage229927_1.jpg
等。
我需要号码22997
,所以从char 9
开始,到_
结束。
答案 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;
}
}