C# 如何从给定的枚举列表中查找单词并确定其优先级?
我的枚举定义如下:C# 如何从给定的枚举列表中查找单词并确定其优先级?,c#,asp.net,regex,enums,C#,Asp.net,Regex,Enums,我的枚举定义如下: public enum TextType { JOIN, SUBSCRIBE, STOP, HELP, CANCEL, UNSUBSCRIBE, UPGRADE, BALANCE, USAGE } 我想对其进行优先排序,并按如下方式进行筛选: public enum TextType { JOIN, SUBSCRIBE, STOP, HE
public enum TextType {
JOIN,
SUBSCRIBE,
STOP,
HELP,
CANCEL,
UNSUBSCRIBE,
UPGRADE,
BALANCE,
USAGE
}
我想对其进行优先排序,并按如下方式进行筛选:
public enum TextType {
JOIN,
SUBSCRIBE,
STOP,
HELP,
CANCEL,
UNSUBSCRIBE,
UPGRADE,
BALANCE,
USAGE
}
是(如果手机尚未验证是否可以接收文本,则接受此文本;否则忽略并转到下一条)
停止、取消、取消订阅
帮助
平衡或使用
升级
因此,基本上当用户发送一条短信说“是的,平衡”,然后我先在内部检查电话号码
是注册的。如果注册,那么我应该使用“余额”文本并返回余额。但是如果我们的电话没有注册
然后我应该先用文本“是”注册手机,然后忽略其余的。
我的问题是,目前我正在使用Enum.IsDefined来确定上述内容是否有效,因为我们有两个
不同的文本组合在一起,它马上就失败了
if (Enum.IsDefined(typeof(TextType), VtextType))
那么,我如何在C#中重写下面的IF条件,以便我能够同时接受“是”和“平衡”。我应该更改枚举的定义还是应该使用“contains”还是应该使用regex?我正在使用.Net4.5
请帮忙
Michaels回复后,我是否可以循环遍历数组字符串,如下所示:
foreach (string s in Tokens)
{
Console.WriteLine(s);
}
这样行吗 听起来您好像收到了一条纯文本消息,需要对其进行解析以获取一组指令。一旦解析了指令,就可以遍历具有代表性的数据结构(如数组或抽象语法树)并做出决策 在不知道您收到的消息的完整语法的情况下,我只能猜测解析它们的最佳方式。有些选择是:
- 通过空格将消息拆分为令牌数组,并循环遍历令牌
- 使用更复杂的语法分析库,例如
更新:如果您只是想拆分字符串并查看每个单词(或标记),可以使用以下方法:
var Tokens = Regex.Split(myString, @"\s+");
现在您有了一个字符串数组,可以分别查看数组中的每个字符串。您可以查看第一个字符串是否为“是”,尝试将每个字符串解析为您的枚举,等等。我们可以将文本作为“是平衡”或文本作为“是”或仅作为“平衡”。这有帮助吗?然后只需在空白处拆分文本并查看结果字符串数组中的术语。因此,如果我只需要第一个单词或第二个单词,以防需要跳过“是”,那么我将如何将其传递到拆分?谢谢。我想这会管用的。但是要单独查看数组中的每个字符串,我需要循环还是可以显式地将其用作令牌[1]等?net新手,因此不确定如何循环遍历数组字符串。请告知。提前感谢:-)