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 に答える