子字符串Windows窗体

本文关键字:窗体 Windows 字符串 | 更新日期: 2023-09-27 18:27:13

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

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

namespace Literki
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void btnLitery_Click(object sender, EventArgs e)
        {
            int LetterCount = 0;
            string letter = "";
            string text = TextBoxWord.Text;
            string wyr = textBoxLitera.Text;
            int w = wyr.Length;
            for (int i=0;i<text.Length;i++)
            {
                try
                {
                    letter = text.Substring(i, w);
                }
                catch (ArgumentOutOfRangeException f)
                {
                    MessageBox.Show(f.Message);
                }
                if (letter == textBoxLitera.Text)
                    LetterCount++;
            }
            MessageBox.Show(LetterCount.ToString());
        }
    }
}

我在这里做错了什么?(很抱歉我的语言,这是我第一次在这里发帖)谢谢你的帮助!

子字符串Windows窗体

如果i在字符串的末尾,并且您尝试将w个字符(其中w > 1)作为子字符串,它将失败。

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

"Four".Substring(3, 4) // throws an exception
"Four".Substring(3, 1) // returns "r"

您需要确保:

  1. CCD_ 5的长度不大于CCD_ 6的长度。这将始终引发异常
  2. 代码的子字符串不能超过text的末尾。一种方法是将for循环上的条件更改为i <= text.Length - w

事实上,条件应该是

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