0

我的目标:我想解析一个文件并将其显示在文本框中。这是代码(感谢 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;
            }
        }
    }

文本文件如下所示: 在此处输入图像描述

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

在此处输入图像描述

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

4

3 回答 3

0
numbers = "(" + new String(numbers.Where(Char.IsDigit).ToArray()) + ")";
于 2013-08-27T19:44:53.653 回答
0

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

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

于 2013-08-27T19:47:05.150 回答
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 开始,基本上返回整行。

于 2013-08-27T19:48:43.113 回答