c#字符串问题

本文关键字:问题 字符串 | 更新日期: 2023-09-27 18:10:17

我有一个名为txtOutput的多行文本框,它接收来自串行端口的消息。每条新消息都是一条新线,代表从1到最多4位的数字。用于在多行文本框中添加数据的方法是追加。我对上述功能没有任何问题,它工作得很好。

我想从txtOutput获取最后一条消息,如果数字小于1000,则显示在textBox2中,如果数字小于1000,则显示在textbox3中。然后这两个文本框将被更新。

如果有人能给出一个例子,特别是如何从多行文本框中获得最后消息到一个变量,以及如何更新文本框,如果有一个新的值,我将不胜感激。

c#字符串问题

您应该将最后一条消息(来自串行端口)保存在一个变量中,例如lastSerialMesssage。然后可以将该值转换为整数,并使用conditional statement检查该值是否小于1000,如果小于1000,则将TextBox3设置为最后一个串行消息值,否则将该值设置为TextBox2

string lastSerialMessage = SerialPortMessage;
int lastMessageValue;
Int32.TryParse(lastSerialMessage, out lastMessageValue);
if (lastMessageValue < 1000)
{
   TextBox3.Text = lastSerialMessage;
} else {
   TextBox2.Text = lastSerialmessage;
}
http://msdn.microsoft.com/en-us/library/f02979c7.aspx

感谢所有的建议,但正如我在评论中提到的,建议的方法不起作用,因为字符串的内容不准确,我最终在textBox 2和3中只接收部分数据,而不是总是。我已经解决了这个问题(感谢其他建议)使用RegEx以这种方式:

 if (txtOutput.Text.Length > 0)
        {
            MatchCollection mc = Regex.Matches(txtOutput.Text, @"('+|-)?'d+");
            if (mc.Count > 0)
            {
                long value = long.Parse(mc[mc.Count - 1].Value);
                if (value < 1000)
                {
                    textBox2.Text = value.ToString();
                }
                else
                {
                    value = value - 1000;
                    textBox3.Text = value.ToString();
                }
            }
        }

这工作得很好,没有丢失任何信息。再次感谢您的建议。