文本框在解析文本文件时显示额外信息

时间:2013-08-27 19:42:18

标签: c# visual-studio-2010

我的目标:我想解析一个文件并将其显示在文本框中。这是代码(感谢Aviral Singh)。

private void Form1_Load(object sender, EventArgs e)
    {
        var path = @"C:\Users\Smith\Desktop\Settings.txt"; //Path to settings file.
        RichTextBox rtb = new RichTextBox();
        System.IO.StreamReader sis = new System.IO.StreamReader(path);
        rtb.Text = sis.ReadToEnd();
        sis.Close();
        foreach (string line in rtb.Lines)
        {
            if (line.Contains("Installation Technical Manual:") == true)
            {
                string numbers = line.Substring(line.IndexOf("Installation Technical Manual:"));
                textBox1.Text = numbers;
            }
        }
    }

文本文件如下所示: enter image description here

我的问题:我程序中的文本框显示整行:安装技术手册:(1234567890)。

enter image description here

我只想在方括号(1234567890)。中显示数字。我应该对代码进行哪些更改以删除单词并仅显示带括号的数字?谢谢你的帮助。 :)

3 个答案:

答案 0 :(得分:0)

numbers = "(" + new String(numbers.Where(Char.IsDigit).ToArray()) + ")";

答案 1 :(得分:0)

问题是IndexOf()将为您提供您要求索引的字符串的起始位置。在您的示例中哪个将为0,因此从0开始的Substring调用将返回整个字符串。

你真正想做的是Substring(IndexOf("Installation Technical Manual:") + "Installation Technical Manual:".Length)。这将为你提供之后你的字符串。

答案 2 :(得分:0)

假设你的行总是有':',

if(line.Contains(":"))
{
string numbers = line.Split(':')[1];
textBox1.Text = numbers;
}

您的代码无法正常工作的原因,因为您使用了substring方法和一个参数,因此它用作:

public string Substring(
    int startIndex
)

请参阅:http://msdn.microsoft.com/en-us/library/hxthx5h6.aspx

你正在传递,line.IndexOf("Installation Technical Manual:") 将返回)。 见这里:http://msdn.microsoft.com/en-us/library/k8b1470s.aspx 所以你基本上是说Substring安装技术手册的返回string :(编号)从0开始,基本上返回整行。