有没有办法用子字符串桥接空行?

问题描述 投票:0回答:1

使用以下代码,我在文本框中逐行删除

(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");
c#
1个回答
1
投票

您可以做一些事情来让您的生活更轻松(假设您必须像您向其他人所说的那样保留一个文本框。)

在详细介绍之前,问题似乎是您在解析表示数据行的文本(包含您想要操作的金额的数据)时遇到困难。如果这是一个不正确的假设,请忽略此答案。

好吧,回到正题...

  1. 不要尝试直接在文本框中处理文本,而是先将整个字符串作为行列表读取(即

    List<String>
    )。您可以使用
    Split
    函数或 RegEx 表达式来完成此操作。 看这里

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

最后,如果您仍然需要删除文本行(我不确定您是否只是为了逻辑而删除文本,或者是否需要显示它),只需从行的字符串列表中删除它们即可。如果需要将其显示回 UI 中(值得怀疑,因为在处理结束时它似乎应该为空白)只需使用

Join
将行转换回字符串,然后将其设置回
TextBox.Text
属性。

附注为了(尝试并)避免评论,例如您收到的有关设计的评论,可以通过说“不幸的是,由于本问题之外的问题,我只能使用文本框,因此我在这里寻找答案。 至少这应该减少那些告诉你“以不同的方式做事!”的回应。而不是回答你的问题。

© www.soinside.com 2019 - 2024. All rights reserved.