在txt doc中寻找标签

时间:2013-07-17 22:39:03

标签: c#

好的,我尝试过你们所有的东西,但是它仍然不适合我。我不确定为什么,但它有时不会产生输出,有时它会放出一个不正确的输出。我做错了什么。

 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;
            }

        }

3 个答案:

答案 0 :(得分:4)

此:

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

可能需要这样:

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

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

答案 1 :(得分: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);

答案 2 :(得分: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;
            }
        }
    }