try
{
string claName="sdfas一二三dasdfsadf"; //是中文加字母
int i=claName.Length-1;
 
MessageBox.Show( claName.Substring(3,i));
}
catch (Exception ee)
{MessageBox.Show(ee.Message);}

解决方案 »

  1.   

    i的长度过大,那个参是取字符的个数.
    你的起始位是3,当然没这么字符取出来.应该(claName.Length-3)
      

  2.   

    你把int i=claName.Length-3肯定可以,你这样写要取的东西已经比原来的字符长了
     
      

  3.   

    老大.拜托你看看SDK中String class Substring(int startIndex,int length)描述好不?
    "startIndex 加 length 之和指示一个不在此实例内的位置"就会有:
    ArgumentOutOfRangeException 异常.你这里的3+i> claName.Length 
    不用说肯定会throw ArgumentOutOfRangeException .
      

  4.   

    我的claName为 年级+班级名,比如“2002物理一班”我想得到“物理一班”。忘不吝赐教!
      

  5.   

    string  claName="2002物理一班";
    claName.Trim("物理一班");
      

  6.   

    如果对数据库进行操作,年级长度固定.这样会更好些:
    try
    {
    string claName="2002物理一班";
    int i=claName.Length-4;
    string className=claName.Substring(4,i);
    MessageBox.Show(className);
    }
    catch (Exception ee)
    {MessageBox.Show(ee.Message);}