C# Substring(…)方法给出异常

C# Substring(…)方法给出异常,c#,.net,string,substring,C#,.net,String,Substring,我想从richtextbox中保留一个字符串到另一个字符串strTotal。然后我想把它分成两个子串,就像第一部分和第二部分一样,中间有一个索引,比如midIndex 然后我想改变前半部分的一些值,并加入后半部分。最后显示给richTextBox 为此,我使用了以下代码: 对于我的最后一次调试: rtxtQueryPan.Text.Length=53; midIndex=45 //string Totalqueryy = rtxtQueryPan.Text; string firstHalf

我想从richtextbox中保留一个字符串到另一个字符串strTotal。然后我想把它分成两个子串,就像第一部分和第二部分一样,中间有一个索引,比如midIndex

然后我想改变前半部分的一些值,并加入后半部分。最后显示给richTextBox

为此,我使用了以下代码:

对于我的最后一次调试:

rtxtQueryPan.Text.Length=53; midIndex=45

 //string Totalqueryy = rtxtQueryPan.Text;
 string firstHalf = rtxtQueryPan.Text.Substring(0, midIndex-2); 
 string secondHalf = rtxtQueryPan.Text.Substring((midIndex- 1), (rtxtQueryPan.Text.Length - 1)); // THIS LINE SHOWS ERROR

 string duplicateFirstHalf = firstHalf;
 firstHalf += " " + clColumnNames.Text + ",";
 rtxtQueryPan.Text = firstHalf+secondHalf;
在代码的第三行中说:

索引和长度必须引用字符串中的位置。 参数名称:长度

我已经检查了长度、midIndexvalue等,但没有发现任何线索。

C#的
。子字符串
函数的第二个参数是长度,而不是位置

因此,您可能希望编写以下代码:

rtxtQueryPan.Text.Substring(midIndex-1, (rtxtQueryPan.Text.Length-1) - midIndex);
另外,length参数是可选的,而不是您应该在案例中提供的,因为您希望包含字符串的其余部分。因此,你也可以写:

rtxtQueryPan.Text.Substring(midIndex-1);
C#的
.Substring
函数的第二个参数是长度,而不是位置

因此,您可能希望编写以下代码:

rtxtQueryPan.Text.Substring(midIndex-1, (rtxtQueryPan.Text.Length-1) - midIndex);
另外,length参数是可选的,而不是您应该在案例中提供的,因为您希望包含字符串的其余部分。因此,你也可以写:

rtxtQueryPan.Text.Substring(midIndex-1);

子字符串
只能在所作用字符串的范围内工作。这里,
rtxtQueryPan.Text
指的是
RichTextBox
中的文本,它比字符串中当前保存的文本长。记住
Substring
的参数是起始位置和长度

您需要
(rtxtQueryPan.Text.Length-1)-midIndex
作为第二个参数


我希望这会有所帮助。

子字符串只能在所作用字符串的范围内工作。这里,
rtxtQueryPan.Text
指的是
RichTextBox
中的文本,它比字符串中当前保存的文本长。记住
Substring
的参数是起始位置和长度

您需要
(rtxtQueryPan.Text.Length-1)-midIndex
作为第二个参数


我希望这能有所帮助。

问题是你在中途抓住第二根弦,说我想要整根弦。如果使用子字符串,则第二个pramater是子字符串的长度。这应该可以解决它。
string secondHalf=rtxtQueryPan.Text.Substring((midIndex-1),

(rtxtQueryPan.Text.Length-1-midIndex))

问题是你从中间抓住第二个字符串,然后说我想要整个字符串。如果使用子字符串,则第二个pramater是子字符串的长度。这应该可以解决它。
string secondHalf=rtxtQueryPan.Text.Substring((midIndex-1),

(rtxtQueryPan.Text.Length-1-midIndex))

索引和长度的值是什么?使用子字符串的字符串是什么?IIRC,子字符串在c中的工作方式#给出.Substring(startIndex,length)。所以您希望第二行是rtxtQueryPan.Text.Substring((midIndex-1),(rtxtQueryPan.Text.Length-1-midIndex));“我相信这应该行得通,不过我可能把索引弄乱了。”德科耶好心地标记一些东西作为答案?对不起@DavidPfeffer。感谢您的提醒。
索引
长度
的值是多少?您使用的子字符串是什么?IIRC,子字符串在c中的工作方式#您给出了.Substring(startIndex,length)。所以您希望第二行是rtxtQueryPan.Text.Substring((midIndex-1),(rtxtQueryPan.Text.Length-1-midIndex));“我相信这应该行得通,不过我可能把索引弄乱了。”德科耶好心地标记一些东西作为答案?对不起@DavidPfeffer。谢谢提醒。函数是
子字符串
(小写“s”):)哦,是的,谢谢。我在这个小编辑里把它删掉了。如果现在没有智能感知,我们该怎么办!?再次感谢:]函数是
子字符串
(小写“s”):)哦,是的,谢谢。我在这个小编辑里把它删掉了。如果现在没有智能感知,我们该怎么办!?再次感谢:]