保持string的前8个字符的错误

我对C#Winform编程非常陌生。 我想从Excel文件中读取一列string。 我定义了一个名为cusip的string,一些cusip是空的,一些是纯数字,一些是数字和字母的混合。 读完每个string后,如果长度超过8个字符,我只想保留8个字符,如果string是空的,我想命名为“000000cm”。 最后一步是将每个string添加到列表中,然后执行其他操作。

在这行代码中,我总是收到错误信息:“Object reference not set to a instance of a object”

cusip.Substring(0,7).ToString(); 

这里是代码快照:

 string cusip; cusip = Convert.ToString((range.Cells[rCnt, 3] as Excel.Range).Value2); if (cusip != "") { cusip.Substring(0,7).ToString(); } else cusip = "000000cm"; cusipList.Add(cusip); 

cusip.Substring(0,7).ToString(); 不改变cusip和空的检查也可能会导致问题。

将代码更改为:

 string cusip; cusip = Convert.ToString((range.Cells[rCnt, 3] as Excel.Range).Value2); if (!string.IsNullOrEmpty(cusip)) { cusip = (cusip.Length > 7) ? cusip.Substring(0,8) : cusip; } else { cusip = "000000cm"; } cusipList.Add(cusip); 

尝试这个:

 string cusip = Convert.ToString((range.Cells[rCnt, 3] as Excel.Range).Value2); if (!string.IsNullOrEmpty(cusip)) { if (cusip.Length > 8) { cusip = cusip.Substring(0,8); } } else { cusip = "000000cm"; } cusipList.Add(cusip); 

尝试

 string cusip = Convert.ToString((range.Cells[rCnt, 3] as Excel.Range).Value2)??""; if (!string.IsNullOrEmpty(cusip)) { cusip = cusip.Substring(0,8); } else { cusip = "000000cm"; } cusipList.Add(cusip);