【问题标题】:Converting strings to int in C#在 C# 中将字符串转换为 int
【发布时间】:2013-05-23 07:45:27
【问题描述】:

我对 C# 很陌生,我想做一个纸牌游戏。我所拥有的是一张卡片(字符串)列表,其名称类似于c6, s3, h11, d13,其中character represents the colournumber represents the value。当按下按钮时,程序会从列表中获取一个随机字符串并将其显示在文本框中。从那里开始,游戏的重点是猜测下一张随机牌的值是比前一张牌高还是低。

我想要做的是从文本框中获取字符串并将其转换为 int,以便我可以将前一张卡的值与新卡进行比较。唯一的问题是我如何摆脱c6 中的c,以便我可以使用parse 进行转换。

这是我的代码。

public partial class MainWindow : Window
{
    static Random rndmlist = new Random();
    Random rndm = new Random();
    List<string> deck = new List<string>();
    int score = 0;
    public MainWindow()
    {
        InitializeComponent();
    }

    private void test_Click(object sender, RoutedEventArgs e)
    {
        //disregard this
        foreach (string j in deck)
        {
            testbox.Text += j + ", ";
        }
    }

    private void btnstart_Click(object sender, RoutedEventArgs e)
    {
        //this is where i add all the cards to the list
        for (int i = 1; i <= 13;)
        {
            deck.Add("c" + i);
            i++;
        }
        for (int i = 1; i <= 13; )
        {
            deck.Add("s" + i);
            i++;
        }
        for (int i = 1; i <= 13; )
        {
            deck.Add("h" + i);
            i++;
        }
        for (int i = 1; i <= 13; )
        {
            deck.Add("d" + i);
            i++;
        }
    }

    private void btnbegin_Click(object sender, RoutedEventArgs e)
    {
        //this is where i take a random card from the list and display it in textBox2
        int r = rndmlist.Next(deck.Count);
        textBox2.Text = ((string)deck[r]);

        //disregard this
        testbox.Text += ((string)deck[r]) + ", ";
        deck.Remove((string)deck[r]);
    }

    private void btnhigh_Click(object sender, RoutedEventArgs e)
    {
        //this is where i want to compare the cards.
    }
}

提前感谢您阅读本文。 (:

【问题讨论】:

  • int.Parse(str.Substring(1))
  • 如果你用struct CardSuitValue 字段映射到枚举而不是哑字符串,这可能会更好。
  • 使用 mystring.Substring(1);

标签: c# wpf string int


【解决方案1】:

试试这个,

 string SubString = MyString.Substring(1);

但要注意如果字符串为空,那就是错误情况。

【讨论】:

  • 我决定选择这个,因为它很简单。感谢所有帮助:D
【解决方案2】:

您可以使用正则表达式替换所有字母字符,例如

string result = Regex.Replace(myString, @"[a-zA-Z\s]+", string.Empty);

【讨论】:

    【解决方案3】:

    假设数字前总是有一个(并且只有一个)字符,您可以简单地这样做:

    string numberAsString = "c2".Substring(1);
    

    并将其设为int

    int number = Int32.Parse(numberAsString);
    

    【讨论】:

      【解决方案4】:
      string str = "c12";
      var noChars = str.SubString(1); // take a new string from index 1
      var number = Int32.Parse(noChars);
      

      【讨论】:

        【解决方案5】:

        我最好创建一个类Card,它代表一张卡片,有2个属性:ColorNumber,实现方法Card.ParseFromString()

        【讨论】:

          猜你喜欢
          • 2011-07-11
          • 1970-01-01
          • 1970-01-01
          • 2021-10-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多