我想将一个字符串保存到richtextbox中的另一个字符串strTotal。然后我想把它分成两个SubString,比如firstPart和secondPart,中间索引说:midIndex。
然后我想在firsthalf中更改一些值并与secondhalf连接。最后将它显示给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;
代码的第3行说:
索引和长度必须指向字符串中的位置。 参数名称:长度
我检查了长度,midIndexvalue等。但是没有发现任何线索。
答案 0 :(得分:4)
C#的.Substring
函数将长度,而不是位置作为其第二个参数。
因此,您可能希望编写以下代码:
rtxtQueryPan.Text.Substring(midIndex-1, (rtxtQueryPan.Text.Length-1) - midIndex);
此外,长度参数是可选的,而不是您应该提供的内容,因为您希望包含其余字符串。你也可以这样写:
rtxtQueryPan.Text.Substring(midIndex-1);
答案 1 :(得分:1)
Substring
只能在被执行的字符串的边界内工作。在这里,rtxtQueryPan.Text
指的是RichTextBox
中的文本,该文本比字符串中当前保存的文本长。请记住Substring
的参数是起始位置和长度。
您希望(rtxtQueryPan.Text.Length-1) - midIndex
作为第二个参数。
我希望这会有所帮助。
答案 2 :(得分:1)
问题是你从中途抓住第二个字符串并说我想要整个字符串。如果您使用子字符串,则第二个pramater是子字符串的长度。这应该解决它。
string secondHalf = rtxtQueryPan.Text.Substring((midIndex- 1),
(rtxtQueryPan.Text.Length - 1-midIndex));