【问题标题】:Replace string value with '0' when string is empty当字符串为空时,将字符串值替换为“0”
【发布时间】:2014-08-10 03:31:41
【问题描述】:

我正在从文本框中获取一个值并将其转换为十进制。但是,文本框值可能为空。那么,如何处理文本框中的空字符串呢?

不幸的是,我有大约 50 个文本框要处理,所以像“使用 IF 条件检查 null”这样的答案对我没有帮助。如果我使用所有这些 IF 条件,我的代码会看起来很丑。

我有这个

Convert.ToDecimal(txtSample.Text)

为了处理空值,我这样做了

Convert.ToDecimal(txtSample.Text = string.IsNullOrEmpty(txtSample.Text) ? "0" : txtSample.Text)

但是,上面的代码在文本框中显示“0”。用户不想看到“0”。另一种解决方案是将文本框值转换为变量,然后将变量转换如下。

string variable = txtSample.Text;
Convert.ToDecimal(variable = string.IsNullOrEmpty(variable) ? "0" : variable)

但同样,我不想定义大约 50 个变量。我正在寻找一些在转换过程中处理空值而不添加额外代码行的代码。

【问题讨论】:

  • 这是什么类型的应用程序? WPF?网络?我问的原因是因为 WPF 应用程序有 Value Converters 让这变得超级容易。
  • +1 帖子以抵消虚假的 -1(?)。不知道为什么人们仍然无缘无故地发布-1...来吧伙计们...

标签: c# replace converter string


【解决方案1】:

但是,上面的代码在文本框中显示“0”。用户不想看到“0”。

这是因为您的语句将新值分配给 txtSample.Text(当您执行 txtSample.Text = ... 时)。只需删除作业:

Convert.ToDecimal(string.IsNullOrEmpty(txtSample.Text) ? "0" : txtSample.Text)

如果你有很多文本字段要处理,为了让事情变得更容易,你可以定义一个扩展方法:

public static string ZeroIfEmpty(this string s)
{
    return string.IsNullOrEmpty(s) ? "0" : s;
}

并像这样使用它:

Convert.ToDecimal(txtSample.Text.ZeroIfEmpty())

【讨论】:

  • 大声笑..读了你的回答后我感觉自己像个白痴。哈哈。为什么我首先将值分配给文本框?当问题很明显时,为什么我不考虑删除作业?我到底在想什么 2 个小时来解决这个问题?哈哈。我认为我大脑的编程部分已关闭,我正在与大脑的其他部分一起思考。 :) 。无论如何,谢谢伙计。
【解决方案2】:

你可以创建一个函数来防止到处复制代码。

decimal GetTextboxValue(string textboxText)
{
    return Convert.ToDecimal(string.IsNullOrEmpty(textboxText) ? "0" : textboxText);
}

然后像这样使用它:

GetTextboxValue(txtSample.Text);

【讨论】:

  • 好伙伴。我会这样做的。但我无法将其标记为答案,因为我已经对另一个答案这样做了。
  • 好答案。将答案中的 (variable) 替换为 (textboxText)。
【解决方案3】:

您可以为字符串创建扩展方法,如下所示

        public static decimal ToDecimal(this string strValue)
        {
            decimal d;
            if (decimal.TryParse(strValue, out d))
                return d;
            return 0;
        }

然后您可以在每个地方都使用 txtSample.Text.ToDecimal()。

【讨论】:

    猜你喜欢
    • 2014-11-12
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多