問題について助けが必要です。
実際には、16 進コードで画像の種類を検索して確認します。
string JpgHex = "FF-D8-FF-E0-xx-xx-4A-46-49-46-00";
次に、条件があります
string.StartsWith(pngHex).
問題は、「JpgHex」文字列に表示される「x」文字が、私が望むものになる可能性があることです。
それを確認するには正規表現が必要だと思いますが、方法がわかりません!!
どうもありがとう!
私が言ったように、どのパターンを一致させる必要があるかについて、より良いアイデアが必要です。
ここではいくつかの例を示します。
Regex rgx =
new Regex(@"^FF-D8-FF-E0-[a-zA-Z0-9]{2}-[a-zA-Z0-9]{2}-4A-46-49-46-00$");
rgx.IsMatch(pngHex); // is match will return a bool.
私[a-zA-Z0-9]{2}
は、文字、大文字、小文字、または数字の 2 つのインスタンスを表すために使用します。したがって、上記の正規表現は次のように一致します。
FF-D8-FF-E0-aa-zZ-4A-46-49-46-00
FF-D8-FF-E0-11-22-4A-46-49-46-00
.. etc
[A-Z0-9]
ます。{2}
は 2 回出現することを示します。^
、文字列が で始まることを示し、文字列が で終わることを意味しFF
ます。$
00
2 つの数字だけを一致させたい場合、 を使用する\d{2}
と、全体は次のようになります。
Regex rgx = new Regex(@"^FF-D8-FF-E0-\d{2}-\d{2}-4A-46-49-46-00$");
rgx.IsMatch(pngHex);
これらの魔法のキャラクターをどうやって知ることができますか? シンプルで、どこにでもドキュメントがあります。基本的な正規表現パターンについては、この MSDN ページを参照してください。このページにはいくつかの量指定子が表示されます。それらは、1 つ以上に一致する、または1つだけに一致するなどです。
チートシートも役に立ちます。
あなたが何をしたいのか正確にはわかりませんが、ドット「。」character は正規表現の任意の文字を表します。
したがって、正規表現 "^FF-D8-FF-E0-..-..-4A-46-49-46-00" はおそらくうまくいくでしょう。'^' = 入力の開始。
16 進文字のみを許可する場合は、"^FF-D8-FF-E0-[0-9A-F]{2}-[0-9A-F]{2}-4A-46-49-46 を使用できます。 -00".
正規表現が役に立ちます。次のツールを使用して、テストと学習を行うことができます。 -
http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx
学ぶことができるので、プレイすることをお勧めします。
x の代わりに任意の文字を単純に一致させるには、次のようにします。
"^FF-D8-FF-E0-..-..-4A-46-49-46-00$"
C# では、次のようになります。
var test = "FF-D8-FF-E0-AB-CD-4A-46-49-46-00";
var foo = new Regex("^FF-D8-FF-E0-..-..-4A-46-49-46-00$");
if (foo.IsMatch(test))
{
// Do magic
}
^ や $ などの見慣れない文字を理解するには、正規表現を読む必要があります。http://www.regular-expressions.info/を参照してください。