【问题标题】:How to replace string.empty to "0"如何将 string.empty 替换为“0”
【发布时间】:2014-09-09 14:17:49
【问题描述】:

正如标题所说。

我尝试过str.Replace("","0");,但它给了我错误,因为oldValue 的长度为零。

是否可以将string.Empty 替换成什么东西?

编辑:

我正在维护一个程序,我遇到该程序正在调用一个方法,该方法将返回一个字符串,然后将其转换为 Int32。

int x = Convert.toInt32(Method1());

public string Method1()
{
      string retString = string.Empty;
      //Do Something
      return retString
}

【问题讨论】:

  • 你到底是什么意思?每个字符串都包含无限数量的空字符串……你能给出示例输入和输出吗?如果 str if "xy" 例如,你希望结果是什么?
  • 您只是在寻找类似if (str == "") str = "0"; 的东西吗?如果是这样,那根本不是string.Replace 的用途。如果没有,请更新您的问题。
  • 杰克,你知道你不需要编写自己的方法来将字符串转换为 int32 吗?已经有int.Parseint.TryParse,正如你提到的Convert.ToInt32
  • @Sayse - 你好。我在 Convert.ToInt32() 上遇到错误,这就是为什么我认为我需要在返回之前将 string.empty 替换为零...
  • @JackFrost - 我创建了一个答案,展示了如何使用 int.TryParse 它应该更好地满足您的要求

标签: c#


【解决方案1】:

您可以使用此单行简单地返回 "0" 以获取 null、零长度或空白字符串:

return String.IsNullOrWhiteSpace(str) ? "0" : str;

【讨论】:

    【解决方案2】:

    String.Replace 接受两个字符串参数 oldValue 和 newValue。您指定了 newValue 0 但是空字符串对于 oldValue 是不合法的。

    试试下面的代码:-

    str.Replace(" ","0"); 
    

    或者您可以将“0”分配给空字符串,如下所示:-

    if(str == string.Empty)
    {
       str = "0";
    }
    

    或者让它变得简单:-

    String.IsNullOrWhiteSpace(str) ? "0" : str;
    

    【讨论】:

    • 这不会抛出异常,但它也不会做 OP 想要的。
    【解决方案3】:

    你不能在字符串中替换 空字符串,但是你可以替换,比如说,空格,例如

      str = str.Replace(" ", "0"); // providing str is not null
    

    或者你可以用"0"替换空字符串:

      if (String.IsNullOrEmpty(str))
        str = "0";
    

    解析 stringint 你可以这样做:

      int x = String.IsNullOrEmpty(str) ? 0 : Convert.ToInt32(str);
    

    【讨论】:

      【解决方案4】:

      在 method() 中你可以这样做:

      return String.IsNullOrEmpty(retString) ? "0" : retString;
      

      【讨论】:

        【解决方案5】:

        如果要检查值是否为空,然后将值设置为零,否则使用默认值,如果这样,可以使用内联:

        return string.IsNullOrWhiteSpace(retString ) ? "0" : retString;
        

        【讨论】:

          【解决方案6】:

          如果你知道 str 是空的,那么你可以使用 star="a" 如果要检查,请在 if 条件中编写语句。

          【讨论】:

            【解决方案7】:

            修改后:

            要将空字符串转换为0,并将非空字符串解析为整数,我根本不会处理"0",而是将两者结合在一个方法中。例如:

            int Parse(string s, int d = 0) {
              if (string.IsNullOrEmpty(s))
                return d;
            
              return int.Parse(s);
            }
            

            【讨论】:

              【解决方案8】:

              试试这个...

              public string Method1()
              {
                    string retString = string.Empty;
                    //Do Something
                    return string.IsNullOrEmpty(retString)?"0":retString;
              }
              

              【讨论】:

                【解决方案9】:

                无法将 string.Empty 替换为“0”。它会抛出 ArgumentException。

                    An unhandled exception of type 'System.ArgumentException' occurred in mscorlib.dll.
                Additional information: String cannot be of zero length.
                

                你可以试试下面的代码:

                if(retString == string.Empty)
                {
                retString = "0";
                }
                

                【讨论】:

                  【解决方案10】:

                  听起来你最好的选择是int.TryParse,如果你遇到一个无法设置为有效值的字符串,它会将其设置为整数 (0) 的默认值,并返回一个布尔值,因此您可以知道这已经发生了。

                  int myInt;
                  if(!int.TryParse(myStringVariable, out myInt))
                  {
                      //Invalid integer you can put something here if you like but not needed
                      //myInt has been set to zero
                  }
                  
                  //The same code without the if statement, still sets myInt
                  int.TryParse(myStringVariable, out myInt);
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2023-01-19
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多