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#