我收到异常输入字符串格式不正确

时间:2014-05-22 09:53:54

标签: c# .net

我从以下代码中得到上述错误

System.Collections.Generic.List<int> ListSms = new System.Collections.Generic.List<int>();
ListSms.Add(int.Parse(sms.Sms_Nom));

问题看起来像我在Sms_Nom中带来的文本中包含了一些空格所以这就是为什么我尝试解析它但它不起作用!

任何想法? thanx

3 个答案:

答案 0 :(得分:1)

int value = 0;
if (int.TryParse(sms.Sms_Nom, out value))
{
  ListSms.Add(value);              
}

查看有关Parse v. TryParse

的这个问题

更新 - 删除

之间的空格
 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);