我还没有找到解决这个问题的方法,如果有人能看到,我会非常感激。
我有一个字符串数组。通常字符串数组将包含多个字符串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"?
答案 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();