我有txt
个文件,其中每条新闻都以
* This is new title *
this is the body
thid is the body
....
* This is another title *
用户从ListBox
选择他想要的标题(双击)。我希望我的程序再次检查文件并选择两个标题之间的文本(所选新闻的正文)。
这是我目前的功能,但它唯一的做法是将标题从ListBox
添加到TextBox
(新身体应该在哪里)。
感谢您的帮助。
private void listBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
string text = listBox.SelectedItem.ToString();
List<string> myList = new List<string>();
string tempLineValue;
string txtFile = path.Text; //path is TextBox with file path
Regex regex = new Regex(@text + "(.*)", RegexOptions.Singleline);
using (StreamReader inputReader = new StreamReader(txtFile))
{
while (null != (tempLineValue = inputReader.ReadLine()))
{
if (regex.Match(tempLineValue).Success)
{
myList.Add((regex.Match(tempLineValue)).Value);
}
}
}
for (int i = 0; i < myList.Count; i++)
{
textBox.Text = myList.ElementAt(i);
}
}
答案 0 :(得分:1)
您希望根据文件中的标题获取新闻正文。通过逐行读取文件是不可能的。你必须阅读完整的文件。之后,您可以尝试正则表达式搜索并获取您的新闻机构。我写了一个Regex example来根据标题搜索你的新闻机构。我也测试了它C#,它对我有用。您可以尝试以下代码。
CODE:
string text = " This is new title ";
string txtFile = @"D:\New Text Document.txt"; //path is TextBox with file path
Regex regex = new Regex(@"\*" + text + @"\*(\t|\n|\r|\s)+(.*)(\t|\n|\r|\s)+(.*)(\t|\n|\r)+\*", RegexOptions.Multiline);
using (StreamReader inputReader = new StreamReader(txtFile))
{
string txt = inputReader.ReadToEnd();
Match match = regex.Match(txt);
richTextBox1.Text = match.Value.Replace("*" + text + "*", "").Replace("*", "");
}
输出:
答案 1 :(得分:0)
试试这个:
private void listBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
string text = listBox.SelectedItem.ToString();
string tempLineValue;
string txtFile = path.Text; //path is TextBox with file path
string title = null;
using (StreamReader inputReader = new StreamReader(txtFile))
{
while (null != (tempLineValue = inputReader.ReadLine()))
{
if (tempLineValue.StartsWith("*"))
title = tempLineValue.Substring(2, tempLineValue.Length - 4).Trim();
else if (text == title)
textBox.Text += tempLineValue + Environment.NewLine;
}
}
}
它应该工作,前提是text(listBox.SelectedItem)变量的值为例如&#34;这是新标题&#34;没有*&#39; s。