-2

假设有一个名为“message”的字符串,并假设在控制台中有一个用户类型,

“!My FB List”,但单词“FB”和“List”可能会改变。但是“!我的”不会改变。所以,我想保存用户输入的文本。仅当用户在其他词之前使用“!我的”。

所以,我不知道如何将其用于“if”命令。请帮助我。

如果(消息==“!我的”

4

3 回答 3

5

你的意思是这样的吗?

if (message.StartsWith("!My "))
{
   // do something
}

此代码适用于大多数情况。但是,如果您需要解决Kshitij Mehta评论中提到的情况,您最好使用Split解析字符串并将数组的第一个对象与所需字符串进行比较的方法。当您将输入字符串拆分为一个数组时,您只需以典型的方式 (==) 比较字符串,在这种情况下可能不需要花哨的方法。

还要考虑一个“但是” - 如果您的输入字符串很长,那么拆分可能不是最好的主意。在那种情况下,我可能会使用正则表达式来比较输入字符串的开头。

实施取决于您的需求。只选择最适合您的:)

于 2013-04-14T17:41:14.253 回答
3

听起来您想接受命令,然后根据这些命令做特定的事情。显然,“命令”是用户输入的文本中的第一个单词。

因此,我将消息拆分为空格,然后拆分switch为第一个单词:

var words = message.Split();
var command = words[0];

switch (command) {
    case "!My":
        // Do something
        ...
        break;

    case "!SomethingElse":
        // Do something else
        ...
        break;
    ...
}

之后,您可以使用words[1]获取“FB”和words[2]获取“列表”。在尝试访问它们之前,请务必使用words.Length来验证是否已指定所需的参数数量。

于 2013-04-14T17:43:57.007 回答
2

String 类包含许多静态方法,其中StartsWith().

所以你的 if 语句可以简单地是

 if(UserString.StartsWith("!My"))
 {
      // other conditional code here
 }

从您的问题中不清楚您是否要包括用户"!My"在输入任何其他内容之前输入的情况,但他/她在输入后没有立即输入空格!My。如果您只想在三个字符"!My"后跟一个空格的情况下处理代码,那么(如@Walther 建议的那样),在StartsWith()方法中的测试字符串中添加一个空格

 if(UserString.StartsWith("!My "))
 {
      // other conditional code here
 }
于 2013-04-14T17:46:14.240 回答