string str = srd.ReadLine();
string[] Array1 = Regex.Split(str, ":以价格 ");
string str2 = Array1[1];str读出来是="2010/1/27 8:30:00:以价格 1.404500 执行 SK"
如上Array1[0]读出来是  "2010/1/27 8:30:00"
但是执行到string str2 = Array1[1];的时候总是说超出索引范围的异常
在调试中看到str2是="1.404500 执行 SK"
也就是说已经赋值了的 就是超出范围异常求教了 解决+分···

解决方案 »

  1.   

    会不会是前一句出错?调试的时候看到的数据不正确?取之前最好判断一下Array1 .Length
      

  2.   

    你加个日志,if(Array1.Length<2)
    {
     //日志}
      

  3.   

    Regex
      

  4.   

    string str1 = "2010/1/27 8:30:00:以价格 1.404500 执行 SK";
                string[] Array1 = Regex.Split(str1, ":以价格 ");
                string str2 = Array1[1]; 
    这段代码运行下没错的吧!!
      

  5.   

    编译是通过了的 就是运行的时候 运行到string str2 = Array1[1]; 
    就抛出超出索引范围的异常
    Array[0]就是OK了的或者大家帮忙想下“2010/1/27 8:30:00:以价格 1.404500 执行 SK“
    我需要取出  2010/1/27 8:30:00   datetime
              1.404500 double
              SK       string这几个字段注意 时间有时候会2010/12/5 2010/1/1 这样 也就是长度不一样·····大家帮帮忙了 小弟不胜感激
      

  6.   

                string str1 = "2010/1/27 8:30:00:以价格 1.404500 执行 SK";
                string str3=":以价格 ";
                char[] ch=str3.ToCharArray();
                string[] Array1 =str1.Split(ch,StringSplitOptions.RemoveEmptyEntries);
               
                string str2 = Array1[1]; 执行结果如下:
    Array1[0]="2010/1/27"
    Array1[1]="8:30:00"
    Array1[2]="1.404500"
    Array1[3]="执行"
    Array1[4]="SK"
      

  7.   

    现在没机器试代码 明天试试楼上的方法 OK了分就给你了
    BTW
    swich([string])是可以的吧    就是条件是STRING
      

  8.   


                string str = "2010/1/27 8:30:00:以价格 1.404500 执行 SK";
                string[] result = str.Split(new string[] { "以价格", "执行" }, StringSplitOptions.RemoveEmptyEntries);
                DateTime dt = DateTime.Parse(result[0].TrimEnd(':'));
                double d = double.Parse(result[1]);
                string s = result[2];
                Console.WriteLine(dt);
                Console.WriteLine(d);
                Console.WriteLine(s);
      

  9.   

    http://msdn.microsoft.com/zh-tw/06tc147t(zh-cn).aspx
    switch case。注意还可以直接使用字符串变量
      

  10.   

    string str = srd.ReadLine(); 
    string[] Array1 = Regex.Split(str, ":以价格 "); 
    string str2 = Array1[1]; 这部分代码没有问题。str读出来是="2010/1/27 8:30:00:以价格 1.404500 执行 SK" 
    如上Array1[0]读出来是  "2010/1/27 8:30:00" 
    但是执行到string str2 = Array1[1];的时候总是说超出索引范围的异常 
    在调试中看到str2是="1.404500 执行 SK" 
    也就是说已经赋值了的 就是超出范围异常 那么一定是输入的str有问题了!请仔细检查每次的输入。
    或者把“:以价格”写成“***”测试一下。因为中文,尤其是标点很容易错误。
      

  11.   

    split方法用错了  
    好像
      

  12.   

    我发现问题了 直接写字符串是可以处理 也可以读的 但是从文件读取以后就不行了 StreamReader srd;
                srd   =   File.OpenText("1.txt");
                while (srd.Peek() != -1)
                {
                string str =srd.ReadLine();
                    str.Trim();
                    string str3 = "以价格执行";
                    char[] ch = str3.ToCharArray();
                    string[] Array1 = str.Split(ch,StringSplitOptions.RemoveEmptyEntries);
                //foreach(string i in Array1)
                    listBox1.Items.Add(Array1[2]);
    运行到最后一句就抛出超出范围异常如果我这样            string str ="2010/1/27 8:30:00:以价格 1.404500 执行 SK";
    处理下来就是OK的 费解了 大家帮忙TXT里面的文字是这样的2010/1/27 8:30:00:以价格 1.404500 执行 SK  
    2010/1/27 9:00:00:以价格 1.404900 执行 BP
    2010/1/27 20:00:00:以价格 1.397800 执行 SK
    2010/1/27 20:10:00:以价格 1.396500 执行 BP
    2010/1/27 20:20:00:以价格 1.397200 执行 SK
    2010/1/27 21:00:00:以价格 1.399900 执行 BP
    2010/1/28 5:30:00:以价格 1.399700 执行 SK
    2010/1/28 5:40:00:以价格 1.399600 执行 BP
    2010/1/28 5:50:00:以价格 1.399600 执行 SK
    2010/1/28 6:00:00:以价格 1.399500 执行 BP
    2010/2/3 8:20:00:以价格 1.395000 执行 SK
      

  13.   

    从文件读取的内容可能包括不可显示的字符
    string str =srd.ReadLine();string str1 ="2010/1/27 8:30:00:以价格 1.404500 执行 SK";
    你比较一下从文件将"2010/1/27 8:30:00:以价格 1.404500 执行 SK"这行的内容读到str后,比较str和str1的长度是否相等,如果不等,那你将文件全部读到byte(),对照ASCII表,看有什么不可显示的字符在里面,你将这些不可显示的字符过滤掉后,再想上面那样处理就可以了。