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

时间:2013-10-17 12:53:05

标签: c# string excel substring

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

我在这行代码中不断收到错误消息“对象引用未设置为对象的实例”:

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);

3 个答案:

答案 0 :(得分:2)

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);

答案 1 :(得分:0)

试试这个:

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);

答案 2 :(得分:0)

尝试

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);