有没有办法用Substring桥接空行?

时间:2018-08-20 14:14:26

标签: c#

使用以下代码,我在TextBox (0, 39)中逐行删除。现在,最后一个是金额(1 any Articel 10.00),我想从总额中扣除该金额。为此,我使用了Substring。但是我得到了错误,因为可能没有解释空白。有一个简单的解决方案吗?谢谢

private void btnDelete_Click(object sender, EventArgs e)
{            
    if (TextBox1.Text.Length > 0)            
    {
        txtTotal.Text = (Double.Parse(txtTotal.Text) - Double.Parse(TextBox1.Text.Substring(8, 2))).ToString("0.00");
        TextBox1.Text = TextBox1.Text.Remove(0, 39);               
    }

    if (TextBox1.Text.Length == 0)
    {
        MessageBox.Show("The cart is empty");

1 个答案:

答案 0 :(得分:1)

您可以做一些使您的生活更轻松的事情(假设您必须像对他人所说的那样保留一个TextBox。)

但是,在进入细节之前,问题似乎是您在解析表示数据行的文本时遇到了麻烦,这些数据包含要操作的数量。如果这是错误的假设,请忽略此答案。

好吧,回到原点...

  1. 与其尝试直接在TextBox中处理文本,不如从读取整个字符串作为行列表(即List<String>)开始。您可以使用Split函数或RegEx表达式来实现。 See here

  2. 对每行使用RegEx表达式,不仅可以标识行的类型(“ item”行还是底部的“ All”行)以及这些行的各个部分。例如,您可以使用正则表达式,该正则表达式从行尾开始,然后向后查找数字(以字符串形式)。将其结果用于Parse方法以获取实际的数字值。

最后,如果您仍然需要删除文本行(我不确定您是出于逻辑还是要显示文本的目的删除文本),只需将其从字符串列表中删除即可线。如果需要将其显示在UI中(看起来很可疑,在处理结束时应该为空白),只需使用Join将行转换回字符串,然后将其设置回{{1 }}属性。

希望这会有所帮助!

标记

P.S。为了(尝试)避免诸如关于您的设计的评论之类的评论,它可以通过说“不幸的是,由于该问题之外的问题,我只能使用TextBox”来开始您的问题。在这里寻找答案。”至少应该减少那些告诉您“以其他方式做!”的回答。而不是回答您的问题。