Int /数字列表到字符串?

时间:2014-03-19 19:57:11

标签: c#

我有一串数字,如下所示。然后,我有一个随机数字,如下所示。如果我想查看随机数是否等于字符串中的数字,我该怎么做呢?

          public string[] List = { "5", "3","9" };

            int test = random.Next(1, 10);

现在我有以下内容。所有这些都适用于我的脚本,除了if(test == number),Test是定义的随机数,而我正在试图弄清楚如何将它引用到config.List,这是5的列表, 3,和9.因为你不能在同一个if语句中使用字符串和int。

         foreach (string number in config.List)
            {

                if (test == number)
                {
                    TSPlayer.All.SendSuccessMessage("counting count = {0} number = {1}", count, test);
                }

                if (test >= 5)
                {
                    int amount = 200;
                    int monsteramount = 303;
                    NPC npcs = TShock.Utils.GetNPCById(monsteramount);
                    TSPlayer.All.SendSuccessMessage("#5 exists! count = {0} number = {1}", count, test);
                    TSPlayer.Server.SpawnNPC(npcs.type, npcs.name, amount, args.Player.TileX, args.Player.TileY, 50, 20);
                    TSPlayer.All.SendSuccessMessage(string.Format("{0} has spawned {1} {2} time(s).", args.Player.Name, npcs.name, amount));
                    break;
                }
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您需要将整数的string表示转换为int

您可以将字符串转换为int,如下所示:

string str = "5";
int val = Convert.ToInt32(str);   // val will be 5.

如果您不能信任您的输入(即,您无法100%确定字符串是有效数字),那么您可以使用Int32.TryParse,如下所示:

string str = "5";
int val;
if ( Int32.TryParse(str, out val) ) {
    // conversion was successful, val == 5
} else { 
    // conversion failed. 
}

或者,您可以将int转换为string,这最容易做到:

int val = 5;
string str = val.ToString();

<强>更新

为了更具体,您需要使用第一种方法,如下所示:

foreach (string number in config.List)
{
    var val = Convert.ToInt32(number);
    if (test == val)
    {
        // ...
    }
    ...
}

或者您需要使用第二种方法,如下所示:

foreach (string number in config.List)
{
    if (test.ToString() == number)
    {
        // ...
    }
    ...
}

不管怎样,你必须确保你的类型匹配。

更新2

这就是你问题中的代码,现在(结合了顶部和底部),只有一个更改,这应该会使这一个编译错误消失:

public string[] List = { "5", "3","9" };

int test = random.Next(1, 10);

foreach (string number in config.List)
{
    if (test.ToString() == number)  // This is the line I changed
    {
        // do your thing
    }

    if (test >= 5)
    {
        int amount = 200;
        int monsteramount = 303;
        NPC npcs = TShock.Utils.GetNPCById(monsteramount);
        TSPlayer.All.SendSuccessMessage("#5 exists! count = {0} number = {1}", count, test);
        TSPlayer.Server.SpawnNPC(npcs.type, npcs.name, amount, args.Player.TileX, args.Player.TileY, 50, 20);
        TSPlayer.All.SendSuccessMessage(string.Format("{0} has spawned {1} {2} time(s).", args.Player.Name, npcs.name, amount));
        break;
    }
}

答案 1 :(得分:0)

var listOfInts = List.Select(s => int.Parse(s));

if(listOfInts.Contains(test))
{
  // Do stuff
}