c# 指定的参数已超出有效值的范围怎么办?

namespace ConsoleApp653
{/*在字符串指定位置插入字符 第67页
创建一个控制台应用程序,声明3个string类型的变量str1、str2、str3。
将变量str1初始化为“梦想还是要有的,万一实现了呢!”。
然后使用Insert()方法在字符串str1的索引0处插入字符串“马云说:”,并赋给字符串str2。
最后在字符串str2的索引19处插入字符串“你信吗”,赋给字符串str3并输出str3,*/

internal class Program
{
static void Main(string[] args)
{
string str1 = "梦想还是要有的,万一实现了呢!";
Console.WriteLine("没有插入字符串前的字符串是:"+str1+"\n");
string str2 = str1.Insert(0,"马云说:");
Console.WriteLine("插入字符串后的字符串是:"+str2+"\n");
string str3 = str2.Insert(str2.IndexOf("!"), "你信吗");
Console.WriteLine("再次插入字符串后的字符串是:"+str3);
Console.ReadLine();

}
}
}

string str3 = str2.Insert(str2.IndexOf("!"), "你信吗");
这一行报“指定的参数已超出有效值的范围”,我数了一下是这个范围内。为什么会报错,请教一下!!!

第1个回答  2023-05-05
题主你好,我认真分析了你的问题,并且复制您的代码到IDE中运行,确实报了一样的错,其实很简单,因为"IndexOf()"方法没有找到"!"就会返回-1倒是超出索引范围,而你"str1"的结尾是"!",也就是犯了大小写的错误呢。
以后要避免此错误,您可以在使用 "IndexOf"方法之前,先使用 "Contains" 方法来判断字符串 "str2" 中是否包含 `"!"` 字符,如果不包含,则可以选择适当的操作,例如输出错误消息或者使用其他默认值。例如:
string str3;
if (str2.Contains("!"))
{
str3 = str2.Insert(str2.IndexOf("!"), "你信吗");
}else{
Console.WriteLine("字符串 str2 中不包含感叹号字符!");
// 这里可以选择使用其他默认值,或者直接退出程序等操作
return;
}

c# 指定的参数已超出有效值的范围怎么办?
以后要避免此错误,您可以在使用 "IndexOf"方法之前,先使用 "Contains" 方法来判断字符串 "str2" 中是否包含 `"!"` 字符,如果不包含,则可以选择适当的操作,例如输出错误消息或者使用其他默认值。例如:string str3;if (str2.Contains("!")){ str3 = str2.Insert(str2.IndexOf("!"), "...

...可执行时出错‘指定的参数已超出有效值的范围’,请大虾帮忙!!_百度...
1.“指定的参数已超出有效值的范围” 应该是 Rows[i][5] 数组的下标超出范围了,也就是说数据表中没有那么多个栏位,先解释一下 ds.Tables["Data"] 表示 dataset (一个 dataset 中可以用许多个 datatable, datatable 中实际放的是一行行的数据, dataset 是一个指向它下面各个datatable的指针)...

在一个用vs2013创建的C#窗体解决方案中,向窗体增加一些资源文件后编译...
在一个用vs2013创建的C#窗体解决方案中,向窗体增加一些资源文件后编译出现如下错误: 无法创建“Src\\Form\\BatteryCfgFrm.resx”的清单资源名称。指定的参数已超出有效值的范围。参数名offset。请问这个是怎么回事呢?又该如何解决呀?... 无法创建“Src\\Form\\BatteryCfgFrm.resx”的清单资源名称。指定的参数已超出有效...

c#中指定的参数已超出有效值的范围
当这个集合有10个元素时,你List[10]就会报错了,因为这个集合最大索引是9。而且你的这个迭代我也没看明白,for(int i =0; e.Node.Nodes.Count>0;i++) {} 这条件里,e.Node.Nodes.Count是不变的, 也就是说这个循环如果进来了,肯定就是个死循环了, i会不停的往上加。一般写法都是 fo...

...数据库读取数据指定的参数已超出有效值的的范围 参数名index_百度知...
this.tvBroadcast.Nodes长度不够,内存溢出

急。请教ASP C#中GridView出现的问题,谢谢各位大大,高分~求答案~谢谢...
指定的参数已超出有效值的范围。参数名: index我到底应该怎么办啊55555555555555555555555555我问的不是问题的原因,而是怎么处理这个问题 展开  我来答 14个回答 #热议# 怎么买保险?答案全在这里了 83scharf 2008-10-17 知道答主 回答量:3 采纳率:0% 帮助的人:0 我也去答题访问个人页 关注 ...

指定的参数已超出有效值的范围。
当翻页时,DataGrid的数据源就丢失了,所以需要重新设定。DataGrid1.DataSource = DataTable;DataGrid1.CurrentPageIndex = e.NewPageIndex;this.DataGrid1.DataBind();

C#中怎么捕获串口的连接的异常是属于哪种异常,例如不存在或者被占用...
MessageBox.Show(ex);} 异常条件 InvalidOperationException指定的端口已打开。ArgumentOutOfRangeException此实例的一个或多个属性无效。例如,Parity、DataBits 或 Handshake 属性不是有效值;BaudRate 小于或等于零;ReadTimeout 或 WriteTimeout 属性小于零且不是 InfiniteTimeout。ArgumentException端口名称不是...

c#中Timer是单线程还是多线程?
c#中Timer是多线程。Timer是功能在指定的时间间隔内反复触发指定窗口的定时器事件。语法Timer ( interval {, windowname } )参数interval:指定两次触发Timer事件之间的时间间隔,有效值在0到65之间。在C#里现在有3个Timer类:(1)System.Windows.Forms.Timer。(2)System.Threading.Timer。(3)System....

c# 操作Excel 图表并设置图表的格式?
6.在PlotBy Column的时候,会以一列的数据为一个数据系列画一条线,并把第每列的一行值作为这一条线的标题,而把第一列的每一行作为该线的横坐标。这两种模式相同点就在于,它们都是以坐标格内的值作为纵坐标的。这里需要注意的是,如果第五和第六个参数改为2,并不是取行的第二列或列的第二...

相似回答
大家正在搜