C#下提取汉字首字的拼音首字母,但是不兼容英文与数字;高手帮忙,马上结贴了

解决方案 »

  1.   

    42 private static string getPinYin(string text)
    43    ...{
    44        char pinyin;
    45        byte[] array;
    46        System.Text.StringBuilder sb = new System.Text.StringBuilder(text.Length);
    47        foreach (char c in text)
    48        ...{
    49            pinyin = c;
    50            array = System.Text.Encoding.Default.GetBytes(new char[] ...{ c });
    51
    52            if (array.Length == 2)
    53            ...{
    54                int i = array[0] * 0x100 + array[1];
    55
    56                if (i < 0xB0A1) pinyin = c;
    57                else
    58                    if (i < 0xB0C5) pinyin = 'a';
    59                    else
    60                        if (i < 0xB2C1) pinyin = 'b';
    61                        else
    62                            if (i < 0xB4EE) pinyin = 'c';
    63                            else
    64                                if (i < 0xB6EA) pinyin = 'd';
    65                                else
    66                                    if (i < 0xB7A2) pinyin = 'e';
    67                                    else
    68                                        if (i < 0xB8C1) pinyin = 'f';
    69                                        else
    70                                            if (i < 0xB9FE) pinyin = 'g';
    71                                            else
    72                                                if (i < 0xBBF7) pinyin = 'h';
    73                                                else
    74                                                    if (i < 0xBFA6) pinyin = 'g';
    75                                                    else
    76                                                        if (i < 0xC0AC) pinyin = 'k';
    77                                                        else
    78                                                            if (i < 0xC2E8) pinyin = 'l';
    79                                                            else
    80                                                                if (i < 0xC4C3) pinyin = 'm';
    81                                                                else
    82                                                                    if (i < 0xC5B6) pinyin = 'n';
    83                                                                    else
    84                                                                        if (i < 0xC5BE) pinyin = 'o';
    85                                                                        else
    86                                                                            if (i < 0xC6DA) pinyin = 'p';
    87                                                                            else
    88                                                                                if (i < 0xC8BB) pinyin = 'q';
    89                                                                                else
    90                                                                                    if (i < 0xC8F6) pinyin = 'r';
    91                                                                                    else
    92                                                                                        if (i < 0xCBFA) pinyin = 's';
    93                                                                                        else
    94                                                                                            if (i < 0xCDDA) pinyin = 't';
    95                                                                                            else
    96                                                                                                if (i < 0xCEF4) pinyin = 'w';
    97                                                                                                else
    98                                                                                                    if (i < 0xD1B9) pinyin = 'x';
    99                                                                                                    else
    100                                                                                                        if (i < 0xD4D1) pinyin = 'y';
    101                                                                                                        else
    102                                                                                                            if (i < 0xD7FA) pinyin = 'z';
    103            }
    104
    105            sb.Append(pinyin);
    106        }
    107
    108        return sb.ToString();
    109    }上面的代码兼容了数字和字母,我想不兼容数字和字母,比如“好不啊aa哈”只能通过“hbah”查询即可
      

  2.   


    这也太强了把...这么多if else  在sb.Append(pinyin);前家 
                                                                                                    
                    else
                    {
                        continue;
                    }
                    sb.Append(pinyin);