在运行下面显示程序错误 **
未处理的异常:systemArgumentOutofRange:索引和长度必须 引用字符串中的位置。
**
string input = "OneTwoThree sdfhguiosdrb asdhfuiaserthf aseiryaseuigraweui";
int size = input.Length;
if (input.Length > 30)
{
msg1 = input.Substring(0, 30);
msg2 = input.Substring(msg1.Length, size);
Console.WriteLine("Message: {0}", msg1);
Console.WriteLine("\nMessage: {0}", msg2);
}
else
Console.WriteLine(input);
请帮助我做错了。
答案 0 :(得分:8)
你在这一行上做错了
msg2 = input.Substring(msg1.Length, size);
你在这里做的是,创建一个比你的第一个字符串msg2
的大小更长的子串msg1
,
此处,您的msg1.Length
等于30
而您的size
等于58
表示您正在尝试创建包含startingIndex = 30
和{{1}的字符串在这种情况下这是不可能的,因为第二个字符串Length = 58
的长度为msg1
,而且小于30
。
Albin Sunnanbo根据您的要求回答很好.i.e。
Size i.e. 58
答案 1 :(得分:6)
更改
msg2 = input.Substring(msg1.Length, size);
到
msg2 = input.Substring(msg1.Length, size - msg1.Length);
答案 2 :(得分:0)
msg2 = input.Substring(msg1.Length)
答案 3 :(得分:0)
您可以更改单行msg2 = input.Substring(msg1.Length,size);
使用
msg2 = input.Substring(0, size);
msg2 = msg2.Remove(0, msg1.Length);
问题将得到解决。
string input = "OneTwoThree sdfhguiosdrb asdhfuiaserthf aseiryaseuigraweui";
int size = input.Length;
if (input.Length > 30)
{
string msg1;
string msg2;
msg1 = input.Substring(0, 30);
**msg2 = input.Substring(0, size);**
**msg2 = msg2.Remove(0, msg1.Length);**
Console.WriteLine("Message: {0}", msg1);
Console.WriteLine("\nMessage: {0}", msg2);
}
else
Console.WriteLine(input);