我的代码中有一个部分,我会检查该项是西班牙语项目还是英语项目。我在旧的vb.net应用程序中使用此逻辑。
public int Spanish_Item()
{
int i = 0;
object j = 0;
int k = 0;
string ss = null;
string sp_item = null;
sp_item = TxtItem.Text.Trim();
k = 0;
for (i = 1; i <= 15; i++)
{
ss = sp_item.Substring(i, 2);
if (ss == "XX")
{
k = 1;
i = 16;
}
}
return k;
}
以下代码循环播放 然后我收到此错误消息:
ex.Message“索引和长度必须指代的位置 string。\ r \ nParameter name:length“string
请帮助!!!
答案 0 :(得分:5)
你总是从1到15 - 如果TxtItem.Text
的(修剪过的)文本比15个字符短,那么你就会得到例外。
您应该使用sp_item
的长度为2作为上限来避免错误。
此外,您应该使用i = 16
来停止for循环,而不是设置break
。
但是,我认为您的算法也可以像这样编写而不是for
循环:
if (sp_item.IndexOf("XX")>=1) {
k=1;
}
答案 1 :(得分:0)
在c#中,第一个位置是索引0而不是像vb
那样public int Spanish_Item()
{
int i = 0;
object j = 0;
int k = 0;
string ss = null;
string sp_item = null;
sp_item = TxtItem.Text.Trim();
k = 0;
for (i = 0; i < sp_item.len-2; i++)
{
ss = sp_item.Substring(i, 2);
if (ss == "XX")
{
k = 1;
i = 15;
}
}
return k;
}
你可以使用
if (sp_item.IndexOf("XX")>=0) {
k=1;
}