int i=0;
string name,id;
string nameid="张三365440827902001";
for(;i<nameid.Length;i++)
{
if(Char.IsDigit(nameid,i))
{
break;
}
}
name=nameid.Substring(0,i);
id=nameid.Substring(i);

解决方案 »

  1.   

    unicode编码汉字的大概范围是:4e00 到9fa5(还有少部分的汉字在这个范围之外)
    可以根据这个判断是否是汉字,是汉字取出来,不是汉字放到另的....
      

  2.   

    身份证号不一定是固定的,新旧好像不同
    如果你确定名字一定是汉字就比较好办                            string a="张三365440827902001"; int myIndex=0; for(myIndex=0;myIndex<a.Length;myIndex++)
    {
    if(((int)a[myIndex])<=127)
    {
                       break;
    }
    } MessageBox.Show(a.Substring(0,myIndex)); //姓名
    MessageBox.Show(a.Substring(myIndex));   //身份证号
      

  3.   

    还不如直接找Unicode数字呢,肯定在'0'到'9'之间,名字里头总归不会有数字吧?
      

  4.   

    正则表达式
    string regexStr = @"^(\S+)(\d+)";\\默认人名中不包含数字
    Match m = regex.Match(yourString, regexStr);
    string name = m.Group[1].Value;
    string number = m.Group[2].Value;