我从以下代码中得到上述错误
System.Collections.Generic.List<int> ListSms = new System.Collections.Generic.List<int>();
ListSms.Add(int.Parse(sms.Sms_Nom));
问题看起来像我在Sms_Nom中带来的文本中包含了一些空格所以这就是为什么我尝试解析它但它不起作用!
任何想法? thanx
答案 0 :(得分:1)
int value = 0;
if (int.TryParse(sms.Sms_Nom, out value))
{
ListSms.Add(value);
}
的这个问题
更新 - 删除
之间的空格 if (int.TryParse(sms.Sms_Nom.ToCharArray()
.Where(c => !Char.IsWhiteSpace(c))
.Select(c => c.ToString())
.Aggregate((a, b) => a + b), out value))
{
ListSms.Add(value);
}
这将适用于像“2 2”这样的字符串,这将使它成为“22”之前.TryParse()
答案 1 :(得分:0)
在int.Parse()
之前使用修剪。
同样建议使用int.tryParse()
代替int.prase()
。
答案 2 :(得分:0)
问题看起来像我带来的文字中包含了一些空间
Sms_Nom
,所以这就是为什么我尝试Parse
它,但它没有工作!
所以你有一个sms.Sms_Nom
字符串,如"1 2 3"
,应该解析为123
?
如果文本中有空格并且要删除它们,则可以使用此LINQ查询从所有非空格字符创建新字符串。然后使用int.TryParse
检查它是否为int
:
var noSpaces = sms.Sms_Nom.Where(c => !Char.IsWhiteSpace(c));
string smsNom_noSpace = new String(noSpaces.ToArray());
int sms_Nom;
bool isInt = int.TryParse(smsNom_noSpace, out sms_Nom);
if(isInt)
ListSms.Add(sms_Nom);