我的目标:我想解析一个文件并将其显示在文本框中。这是代码(感谢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)。中显示数字。我应该对代码进行哪些更改以删除单词并仅显示带括号的数字?谢谢你的帮助。 :)
答案 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开始,基本上返回整行。