检查字符串的前16个字符是否为数字

时间:2013-01-14 21:21:52

标签: asp.net

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

非常感谢任何建议。

3 个答案:

答案 0 :(得分:3)

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

^[0-9]{16}

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

用法:

if(Regex.Match(fileName, @"^[0-9]{16}").Success)
{
  fileName = fileName.Remove(0, 16);
}

答案 1 :(得分:1)

string.Remove会很好用:

    var str = "1839341255115211butterflies.jpg";
    str = str.Remove(0, 16);
    Console.WriteLine(str);

答案 2 :(得分: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;

Demo

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

bool startsWith16Digits = file.Take(16).All(Char.IsDigit);