1

私はこれまで RegEx を使用したことがありませんでしたが、今日、RegEx の必要性が生じました。

関数に渡された文字列が有効な Enum メンバー名であるかどうかを確認する必要があります。私の頭の上から、これは記号(「_」以外)を含めることができず、文字で始めることができないことを意味します。今、私はグーグルで自分でそれを理解することができますが、これら2つのルールが列挙メンバー名の唯一のルールであるかどうかはあまりわかりませんでした.それについてオンラインで何も見つけることができませんでした.

編集: いくつかの情報を追加するには... Unity3d 用のエディター プラグインを作成しています。ユーザーは文字列リストを入力でき、スクリプトはこれらの文字列を列挙型のメンバーとして持つ ac# ファイルを生成します。その後、ユーザーはコードを介して列挙値を参照できます。生成される列挙型は、基本的にユーザーが指定する ID のリストであるため、コードでは IdEnum.SomeUserDefinedMember と入力できます。

4

3 に答える 3

3

この正規表現は、列挙値の有効な名前を保証する必要があります

^[a-zA-Z_][a-zA-Z_0-9]*
于 2013-05-20T14:38:30.133 に答える
1

そのようなすべての列挙型の正規表現を構築するだけです:

Type enumeration = ...;
var regex = enumeration.Name + "\.(" + string.Join("|", Enum.GetNames(enumeration)) + ")";

指定された列挙型のすべての値と一致する必要があります。これを拡張して、複数の列挙型に一致させることもできます。

于 2013-05-21T10:30:47.117 に答える