例如有学生学号信息如下:
本科:123456    所在年级:12   
硕士:S123456   所在年级:S12
博士:B123456   所在年级:B12
现在要通过学号自动获取年级信息,我对年级的正则表达式是这样写的:@"^[SB]?\d{2}$",但是接下该如何获取年级字符串?
我不想用if……else语句判断,不知有和更好的方法

解决方案 »

  1.   

    string _SoureString="S123456";
    string _Result=_SoureString.trim("3456".ToCharArray());
      

  2.   

    string _SoureString="S123456";
    string _Result=_SoureString.Substring(0,_SoureString.Length-4);
      

  3.   

    你要获取子串的数据源是什么形式的
    是“123456”,“B123456”,“S123456”这样单个出现的,还是
    123456    
    S123456   
    B123456   
    或者
    本科:123456
    硕士:S123456   
    博士:B123456   
    如果是单个的,用Substring就可以了,如果是多个,用正则可以这样做
    string yourStr = .............;
    MatchCollection mc = Regex.Matches(yourStr, @"\b[SB]?\d{2}");
    foreach (Match m in mc)
    {
        richTextBox2.Text += m.Value + "\n";        //提取结果
    }
      

  4.   

    回楼上,原来的学好字符串是单个出现的,也就是说从数据库的学生信息表的学号字段里读出,然后放到一个字符串变量里,最后通过这个字符串来获取其所在班级。二楼、三楼的兄弟所用的算法我也想到过,不过这个算法的前提条件是本科学号长度必须为6,硕、博学号长度必须为7。但是现在学号长度可能会改变。现在需求是:如果本科,那么前面的两位就是班级;硕、博前面三位就是班级,这个不会改变。
    不知各位有没有更好的方法?如果是在不行只能用if……else了^_^
      

  5.   

    那就用正则吧string yourStr = .........;
    string resultStr = Regex.Match(yourStr, @"\b[SB]?\d{2}").Groups[0].Value;
      

  6.   

    用if……else吧,也没有什么效率损失的,而且逻辑也清楚