首页 > 解决方案 > 如何用字符串拆分计算行数

问题描述

我正在尝试完成几周前到期的练习作业(未评分),但我终其一生都无法弄清楚哪里出了问题。我需要输出为“1 2 快速 3 棕色 4 狐狸 5 跳 6 超过 7 8 懒惰 9 狗”我有拆分字符串,所以我可以记下所有单词,只是无法得到它之前的数字。到目前为止我有这个

int ctr = 0;
            string sentance = "The quick brown fox jumped over the lazy dog. ";
            string[] split = sentance.Split(new char[] { ' ', '.' });
            foreach (string s in split)
            {
                if (s.Trim() != "")
                    Console.WriteLine("{0} {2}", ctr++, s);
            }
            Console.ReadLine();

我一直得到的只是一个未处理的异常,我不知道为什么。

标签: c#

解决方案


在行

Console.WriteLine("{0} {2}", ctr++, s);

{0}指后面列表中的第零个元素;那将是ctr++{1},如果你使用它,会参考下一个,s{2},您确实使用过,如果有下一个,则将引用下一个,但没有;这就是你的问题。

没有 #2 变量(计数 0、1、2)可以填写{2}

尝试

Console.WriteLine("{0} {1}", ctr++, s);

你应该看到{1}捡起来s

您的错误消息可能类似于“索引(基于零)必须大于或等于零且小于参数列表的大小”

这意味着您的索引 2 in{2}是问题所在。它符合第一部分(“大于或等于零”)但第二部分失败(“小于参数列表的大小”),因为您的参数列表只有 2 长(ctr++s),但 2(您的索引在{2}) 不小于 2(参数列表的大小)。

你也有一个与 的值不一致的问题ctr,但这应该足以让你回到正轨。


推荐阅读