本帖最后由 u010580181 于 2013-06-04 12:19:25 编辑

解决方案 »

  1.   

    string s = "ABCD";                s = string.Join("", s.Select(a => Math.Pow(2,((int)a - 65))));
                    //1248
      

  2.   

    Math.Pow(2,((int)a - 65))这个方法对应成数字很棒,应该是第二部的操作。
    最关键的第一步操作,怎么能把一行中的带有A、B、C、D的字符摘取出来,比如下面两行:
    1、【答案】:A
    30、【答案】:BCD
    我只要获取上面一行的:A,下面一行:BCD,其他字符不要。是从RichTextBox的行中获取
      

  3.   

    var lines = this.richTextBox1.Lines.Select(a => {
                        string _pattern = @"(?i)(\d+)[、]\s*?【\w+?】\s*?[::]\s*?([a-z]+)(?=\s|$)";
                        Match m = Regex.Match(a, _pattern);
                        return new { No = m.Groups[1].Value, Answer = m.Groups[2].Value };
                    });
                    /*
                     * + [0] { No = "1", Answer = "A" } <Anonymous Type>
                        + [1] { No = "2", Answer = "AD" } <Anonymous Type>
                        + [2] { No = "30", Answer = "BCD" } <Anonymous Type>                 */
      

  4.   

    很大帮助,谢谢!不过还差一点点,可能刚才没说明白,答案的一行除了A、B、C、D选项之外其它字符不固定,题号可以不要,所以除了ABCD四个字母外其他字符全部摘除,正则表达式应该怎么写
    ABC
    1、AD
    2,A
    3.答案:AC
    BC正确
      

  5.   

     var lines = this.richTextBox1.Lines.Select(a =>
                    {
                        string _pattern = @"(?i)[a-d]+";
                        Match m = Regex.Match(a, _pattern);
                        return m.Value;
                    });
                    /*
                      [0] "A" string
                    [1] "AD" string
                    [2] "BCD" string
                     */