为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
宝慕林4294392 2021-12-05 16:38:56
使用以下代码,我在 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 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

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

然而,在我进入细节之前,问题似乎是您在解析表示数据行的文本时遇到问题,数据包含您想要采取行动的数量。如果这是一个不正确的假设,请忽略此答案。

好吧,回到它...

  1. 不要尝试直接在 TextBox 中处理文本,而是首先将整个字符串作为行列表(即List<String>)读取。您可以使用Split函数或 RegEx 表达式来完成此操作。 看这里

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

最后,如果您仍然需要删除文本行(我不确定您是为了逻辑删除文本还是需要显示它),只需将它们从行的字符串列表中删除。如果需要将其显示在 UI 中(令人怀疑,因为在处理结束时它似乎应该是空白的)只需用于Join将行转换回字符串,然后将其设置回TextBox.Text属性。

希望这可以帮助!

标记

PS为了(尝试和)避免诸如您对设计的评论之类的评论,通过说“不幸的是,由于此问题之外的问题,我只能使用TextBox,因此我”这样的话可能有助于开始您的问题我在这里寻找答案。至少这应该减少那些告诉你“以不同的方式做!”的回应。而不是回答你的问题。


查看完整回答
反对 回复 2021-12-05
  • 1 回答
  • 0 关注
  • 176 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信