我如何计算字符串列表中的单词

时间:2017-10-03 18:26:06

标签: c# count overloading

我经常遇到过载问题, 我查了一下,但似乎没有什么看起来像我的场景...... 我希望这里的人能帮助我。 我的代码示例如下所示。

string s = textbox.text;
char[] delimiter = {' '};
string[] word = s.split(delimiter); //this gets a set of words from s.split
for (int i = 0; i <= word.length; i++) //I also tried word.count()
{
    int ii = 0;
    int counter = wordlist.count;
    bool test1 = false;
    while (test1 == false || ii != counter +1)
    {
        if (word[i] == wordlist[ii]) //this is where it gets stuck. It wants to load more word[i] than what there are in the list... 
        {
            //function gets preformed
            test1 = true;
        }
        else
        {
            ii++;
        }            
    }
}

请帮助我,我脚本的这一部分至关重要...... 谢谢你的时间!

3 个答案:

答案 0 :(得分:1)

不应该是string[] words = s.Split(' ');

即使我们说您的words.Split(' ');,也应该是string[] words = word而不是string[]=word

要计算该数组中的单词数量int howManyWords = words.Length;

此外,如果您想要循环循环次数与列表中的单词一样多次,您应该这样做:

for(int i = 0; i < words.Lenght; i++)
{
    //Do your stuff
}

答案 1 :(得分:1)

虽然你的问题很不清楚(你应该发布你得到的错误,至少它会让你更容易回答)你在评论中将其清除了。你得到的是超出范围异常的索引。

您需要更改循环

for (int i = 0; i <= word.length; i++)

for (int i = 0; i < word.length; i++) // preferable

for (int i = 0; i <= word.length - 1; i++) // not preferable

数组的索引为0而不是1. length属性将为您提供数组中元素的总数。当你到达你的最后一个索引时,i的值将大于元素的数量,因为你从0开始计数。

您还需要更改while循环,因为那里发生了超出范围的异常。它也是同样的问题,除非你加了一个以使它更糟糕。

while (test1 == false && ii != counter - 1)

将其更改为减号,以便它永远不会超出范围。同时将逻辑更改为&amp;&amp;而不是||当它或找到一个匹配时,它永远不会增加ii,所以它会永远被卡住。

您还希望在找到匹配后突破循环。

答案 2 :(得分:0)

好的,所以我发现了我的问题。这是因为wordlist []中没有单词可供阅读...我的不好!

下次我应该采取预防措施......

但是谢谢你们的帮助!代码现在正常工作!