Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从给定的枚举列表中查找单词并确定其优先级?_C#_Asp.net_Regex_Enums - Fatal编程技术网

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新手,因此不确定如何循环遍历数组字符串。请告知。提前感谢:-)