【发布时间】:2013-05-21 18:30:47
【问题描述】:
我以前从未使用过 RegEx,但今天出现了对它的需求。
我需要查看传递给我的函数的字符串是否是有效的 Enum 成员名称。在我的脑海中,这意味着它不能包含符号(“_”除外)并且不能以字母开头。现在我可以用谷歌搜索并自己弄清楚,但我不太确定这两条规则是否是枚举成员名称的唯一规则 - 在网上找不到任何关于它的信息。
编辑: 添加一些信息......我正在为unity3d编写一个编辑器插件。用户可以填充字符串列表,脚本将生成一个 c# 文件,其中这些字符串作为枚举的成员。然后用户可以通过代码引用枚举值。生成的枚举基本上是用户指定的 id 列表,因此在代码中他可以键入 IdEnum.SomeUserDefinedMember
【问题讨论】:
-
您想确认它是否是有效的作为会员名?还是说它是成员?
-
C# 语言规范将为您提供标识符的有效格式。见msdn.microsoft.com/en-us/library/vstudio/ms228593.aspx。特别是,请参见第 B.1.6 节。仅使用正则表达式不太可能做到这一点,因为您必须过滤掉关键字。
-
@JimMischel,我想你有答案。可以将 C# 关键字列表添加到 RegEx,但它会很丑陋且容易出错。通过对 OP 问题的一些了解,也许我们可以找到更好的方法。
-
你有一个错字。枚举可以以字母开头,不能以数字开头。
-
@JimMischel,无需过滤掉关键字。它们是完全合法的枚举值。定义时只需要以@开头即可。