我怎样才能得到""在字符串数组中被视为" 0"?

时间:2016-02-24 15:38:00

标签: c# asp.net arrays

我还没有找到解决这个问题的方法,如果有人能看到,我会非常感激。

我有一个字符串数组。通常字符串数组将包含多个字符串ID(例如" 1"," 2"," 3"),但有时它将包含一个空字符串, (即一个值为&#34的字符串;")。 (这不能改变,因为它对系统的设计是不可或缺的。)

然后将字符串ID转换为整数,并存储在列表中,但如果字符串Id为"",则转换不起作用,因为您无法使用将空字符串转换为整数,因为它没有数字等价物。

我正在尝试使用Replace方法,用" 0"替换空字符串,然后将精细转换为0,但是Replace方法不会替换"的实例。 "因为我基本上是在说,替换没有任何实例,这没有任何意义。

foreach (string stringId in stringArray)
{
    intList.Add(Convert.ToInt32(stringId.Replace("", "0")));
}

所以我的问题是,如何获得""的实例?在字符串数组中被视为或#34; 0"?

3 个答案:

答案 0 :(得分:2)

使用上面提到的技术,您只需要包含条件检查:

foreach (string stringId in stringArray)
{
    intList.Add(Convert.ToInt32((stringId == "" ? "0" : stringId)));
}

您还可以将ConvertAll用于单行实现:

intList = Array.ConvertAll(stringArray, s => (s == "" ? 0 : int.Parse(s))).ToList();

答案 1 :(得分:0)

将其分成多个陈述:

foreach (string stringId in stringArray)
{
    if (!string.IsNullOrWhiteSpace(stringId)) {
         intList.Add(Convert.ToInt32(stringId));
    }
    else {
      intList.Add(0);
    }
}

或使用int.TryParse

foreach (string stringId in stringArray)
{
    int id;
    int.TryParse(stringId, out id);
    intList.Add(id);
}

答案 2 :(得分:0)

您可以使用LINQ:

 intList = stringArray.Select(str => String.IsNullOrEmpty(str) ? 0 : Int32.Parse(str))
                      .ToList();

Array.ConvertAll具有相同的代理人:

intList = Array.ConvertAll(stringArray, str => String.IsNullOrEmpty(str) ? 0 : Int32.Parse(str))
               .ToList();