1

我在数据库中存储了一些文件,其文件名类似于1839341255115211butterflies.jpg。我需要将此文件名显示为butterflies.jpg。我需要删除前 16 位数字,然后显示文件名。添加到它我也有几个文件名在文件名之前没有这个 16 位添加。现在我的问题是我如何识别这个字符串在文件名之前是否有 16 位数值,基于它删除第一个 16 位并只显示文件名。我知道如何删除前 16 位并检索文件名,但需要有关如何识别具有 16 位的字符串的帮助。

任何建议都非常感谢。

4

3 回答 3

3

正则表达式在这里看起来很合适:

^[0-9]{16}

以上将匹配以 16 位数字(0 到 9)开头的字符串。

用法:

if(Regex.Match(fileName, @"^[0-9]{16}").Success)
{
  fileName = fileName.Remove(0, 16);
}
于 2013-01-14T21:24:39.660 回答
1

string.Remove 会很好地工作:

    var str = "1839341255115211butterflies.jpg";
    str = str.Remove(0, 16);
    Console.WriteLine(str);
于 2013-01-14T21:27:46.923 回答
0

使用 Linq:

删除开头的所有数字,直到 16 位:

string file = "1839341255115211butterflies.jpg";
string extension = Path.GetExtension(file);
string fileName = Path.GetFileNameWithoutExtension(file);
fileName = new string(fileName.Where((c, i) => i >= 17 || !Char.IsDigit(c)).ToArray());
file = fileName + extension;

演示

编辑:如果您只想知道前 16 个字符是否为数字,则更容易且更具可读性:

bool startsWith16Digits = file.Take(16).All(Char.IsDigit); 
于 2013-01-14T21:33:55.553 回答