当前位置:编程学习 > C#/ASP.NET >>

C# Substring()越界问题


using System;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = "1,12,123,1234,123,12,1";
            string str=s;
            for (int i = 0; i < 5; i++)
            {
                str = s.Substring(str.IndexOf(',')+1,str.Length-1);
                Console.WriteLine(str);
            }
            Console.Read();
        }
    }
}
C# Substring()越界问题 --------------------编程问答--------------------                 str = str.Substring(str.IndexOf(',') + 1, str.Length - 1 - str.IndexOf(','));
--------------------编程问答-------------------- 我不知道楼主做这个的具体意义是什么,但是我知道,越界了。
str = s.Substring(str.IndexOf(',')+1,str.Length-1);
中,
str.IndexOf(',') // value:“1”。再加“1”,得“2”。
本来总字符串才有“22”。
从“2”开始,最多有 “20”个了,str.Length-1(“21”)那不是越界了?
--------------------编程问答-------------------- 你想干嘛呢?
是不是按逗号分别输出每个数字呢?

        static void Main(string[] args)
        {
            string s = "1,12,123,1234,123,12,1";
            string[] str=s.Split(',');
            for (int i = 0; i < str.Length; i++)
            {
                 Console.WriteLine(str[i]);
            }
            Console.Read();
        } --------------------编程问答--------------------  str = s.Substring(str.IndexOf(',')+1,str.Length-1);
subtring(int i,int j)第二个参数是表示取的个数,不是最后一位的索引 --------------------编程问答-------------------- string s = "1,12,123,1234,123,12,1";
foreach (string item in s.Split(','))
    Console.WriteLine(item); --------------------编程问答-------------------- 建议这样
string s = "1,12,123,1234,123,12,1";
string[] items=s.Split(',');
 foreach (string item in items)
     Console.WriteLine(item);
不然重复调用Split方法 --------------------编程问答-------------------- 你是发生在最后一个元素。其实,不用+1,不把那个逗号也拿出来就是。 --------------------编程问答-------------------- 搞不懂lz的意思。。 --------------------编程问答-------------------- using System;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = "1,12,123,1234,123,12,1";
            string str=s;
            for (int i = 0; i < 5; i++)
            {
                str = s.Substring(str.IndexOf(','),str.Length-1);
                Console.WriteLine(str);
            }
            Console.Read();
        }
    }
}

补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,