-2

問題について助けが必要です。

実際には、16 進コードで画像の種類を検索して確認します。

string JpgHex = "FF-D8-FF-E0-xx-xx-4A-46-49-46-00";

次に、条件があります

string.StartsWith(pngHex).

問題は、「JpgHex」文字列に表示される「x」文字が、私が望むものになる可能性があることです。

それを確認するには正規表現が必要だと思いますが、方法がわかりません!!

どうもありがとう!

4

3 に答える 3

1

私が言ったように、どのパターンを一致させる必要があるかについて、より良いアイデアが必要です。

ここではいくつかの例を示します。

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
  1. 必要に応じて、それに応じて正規表現を変更して、大文字と数字のみを に変更し[A-Z0-9]ます。{2}は 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つだけに一致するなどです。

チートシートも役に立ちます。

于 2013-04-08T14:18:14.683 に答える
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".

于 2013-04-08T14:18:50.503 に答える
0

正規表現が役に立ちます。次のツールを使用して、テストと学習を行うことができます。 -

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/を参照してください。

于 2013-04-08T14:15:56.343 に答える