C# 子字符串窗口窗体

C# 子字符串窗口窗体,c#,indexing,substring,C#,Indexing,Substring,我的想法是将一个单词输入到TextBoxWord,然后将另一个单词放入另一个文本框textBoxLitera,并在我的TextBoxWord.text中接收大量textBoxLitera.text单词。 程序给了我一个很好的答案,但抛出了一个异常 索引和长度必须引用字符串中的位置。参数名长度 namespace-Literki { 公共部分类Form1:Form { 公共表格1() { 初始化组件(); } 私有void btnLitery\u单击(对象发送方,事件参数e) { int-Lett

我的想法是将一个单词输入到TextBoxWord,然后将另一个单词放入另一个文本框textBoxLitera,并在我的TextBoxWord.text中接收大量textBoxLitera.text单词。 程序给了我一个很好的答案,但抛出了一个异常

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

namespace-Literki
{
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
}
私有void btnLitery\u单击(对象发送方,事件参数e)
{
int-LetterCount=0;
字符串字母=”;
string text=TextBoxWord.text;
字符串wyr=textBoxLitera.Text;
int w=wyr.长度;

对于(int i=0;i如果
i
位于字符串末尾,并且您尝试对
w
字符(其中
w>1
)执行子字符串,则将失败

例如,对于单词“four”,最大索引是3(
“four”[3]
返回“r”)。让我们看看当我们在字符串末尾尝试长度>0时会发生什么

"Four".Substring(3, 4) // throws an exception
"Four".Substring(3, 1) // returns "r"
您需要确保:

  • w
    的长度不超过
    文本的长度。这将始终引发异常

  • 代码的子字符串不能超过
    text
    的结尾。一种方法是将for循环上的条件更改为
    i,事实上,条件应该是

     for (int i=0;i<text.Length -w+1;i++)
    

    用于(int i=0;i您确实需要使用调试器逐步检查您的代码以找到问题。这很明显,您将来可以自己解决此问题。一些示例输入和预期输出可能会有所帮助。在这种情况下,这将永远不会返回我的单词的最后一个字符。请使用示例输入和预期输出!)你没注意到我把操作符从
    改过来了吗噢,是的,我没注意到,对不起,伙计:)你一开始就对了
    
     for (int i=0;i<text.Length -w+1;i++)