这是我的示例文件名Text_2.23.txt
我已经分离了扩展,但无法获取版本,因此我可以稍后在代码中使用它进行比较。我需要得到2.23
out,
编辑:文件名可以采用多种形式,但版本始终位于文件名的末尾。
string s = f1.Name.ToString(); //for the Filename
int k = s.LastIndexOf('.');
string lhs = k < 0 ? s : s.Substring(0, k),
rhs = k < 0 ? "" : s.Substring(k + 1);
char[] array = lhs.ToCharArray();
Array.Reverse(array); // reverse search from right to left
for (int j = 0; j < array.Length; j++)
{
char letter = array[j]; //the letter I get out in the sample case is "3"
}
Use the Path
and Version
课程:
string fileName = "Text_2.23.txt";
string fn = Path.GetFileNameWithoutExtension(fileName);
string[] parts = fn.Split('_');
Version v;
if (parts.Length > 1 && Version.TryParse(parts.Last(), out v))
{
Console.Write("Major:{0}, Minor:{1}", v.Major, v.Minor);
}
Demo http://ideone.com/YFe2mj
Edit:因为您已经评论过您的文件名几乎可以是任意的,但版本始终位于末尾,而您只是想要这样string
.
与您评论的样本:
string[] fileNames = new[] { "teext_023.ext", "txtxt.x9.08.ext", "text0911.ext" };
string[] versions = fileNames
.Select(fileName =>
Path.GetFileNameWithoutExtension(fileName).Split('_')
.Last()
.Reverse()
.TakeWhile(c => c == '.' || Char.IsDigit(c))
.Reverse()
).Select(chars => new string(chars.ToArray())).ToArray();
Demo http://ideone.com/ElPztq
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)