0

好的,我尝试了你们所有建议的所有方法,但它仍然不适合我。我不知道为什么,但有时它不会踢出输出,有时它会输出一个不正确的输出。我究竟做错了什么。

 InPutBox = Input.Text;
        int x = 1;
        var lines = Input.Text.Split(new string[] { Environment.NewLine },StringSplitOptions.None);

        for (var index = 0; index < lines.Length; index++)
        {

            var line = lines[index];

            do
            {
                x++;
                System.Console.WriteLine("'{0}'", InPutBox);
                bool test1 = InPutBox.StartsWith("11600");
                bool test2 = InPutBox.EndsWith("(");
                if (test1 && test2)
                {
                    int first = InPutBox.IndexOf("11600");
                    int last = InPutBox.LastIndexOf("(");
                    InPutBox = InPutBox.Substring(first, last - first);
                }
            }
            while (x < 50);
            System.Console.WriteLine("'{0}'", line);
            if ((line.StartsWith("11600") && line.EndsWith("(")))
            {
                MessageBox.Show("These are errors in line" + index + ": " + line);
                break;
            }

        }
4

3 回答 3

4

这个:

InPutBox = InPutBox.Substring(last, first - last);

可能需要是这样的:

InPutBox = InPutBox.Substring(first, last - first);

可能需要加或减 1,具体取决于您是否要包含W0。在调试器中运行它以查看实际数字,您应该能够更快地进行诊断。

于 2013-07-17T22:42:07.990 回答
1

检查你的条件。使用您当前的代码,如果未找到 last , .Substring 将引发错误(因为 startIndex 不能小于零)。

你可能想要这个:

bool test1 = InPutBox.StartsWith("W");
bool test2 = InPutBox.EndsWith("0");
if (test1 && test2) {
    int first = InPutBox.IndexOf("W");
    int last = InPutBox.LastIndexOf("0");
    InPutBox = InPutBox.Substring(last, first - last);
}

@D Stanley 可能是对的,因为最后一行也应该被颠倒

InPutBox = InPutBox.Substring(first, last - first);
于 2013-07-17T22:51:23.257 回答
0
private void InPutBoxMethod()
    {
        // split text into lines
        var lines = textBox1.Text.Split(new string[] {Environment.NewLine}, StringSplitOptions.None);

        // loop through all lines and check for errors
        for (var index = 0; index < lines.Length; index++)
        {
            var line = lines[index];
            System.Console.WriteLine("'{0}'", line);
            if ((line.StartsWith("W") && line.EndsWith("0")))
            {
                MessageBox.Show("These are errors in line " + index + ": " + line);
                break;
            }
        }
    }
于 2013-07-17T23:09:06.987 回答