我在这里尝试过的是,我可以在Textbox1.Text
中显示内容字符串的文件路径,但我无法获取并显示该文件中的字符串。
private void Search_Click(object sender, EventArgs e)
{
string[] filePaths = Directory.GetFiles(@"C:\Users\abcdq\Downloads\Documents\", "*.pdf", SearchOption.AllDirectories);
for (int i = 0; i < filePaths.Length; i++)
{
string settext = GetTextFromPDF(filePaths[i]);
if (settext.ToUpper().Contains(textBox1.Text.ToUpper()))
{
MessageBox.Show(filePaths[i]);
}
}
}
例如:在account.pdf中,它有:
新用户?对于新用户,您需要填写表格 页面右侧包含以下信息:支持参考 - 这是您与我们的支持合同号码,例如DM1234或RH1234。 公司名称 - 这需要是我们知道您匹配的确切名称 你的支持参考。显示名称 - 您的名字,这将 在您使用网站中的某些表单时自动填写。 电子邮件&amp;电子邮件确认 - 您的电子邮件地址,这将成为您的 用户名。密码 - 至少包含6个字符的密码 (字母,数字和符号)。
email confirm
时,结果必须返回给我Email confirm
字符串而不是email confirm
。Email & Email confirm – Your email address
。答案 0 :(得分:1)
如果您想知道字符串中的 where 找到了您要查找的文字,请使用string.IndexOf()
。例如:
string searchText = textBox1.Text;
int index = settext.IndexOf(searchText, StringComparison.OrdinalIgnoreCase);
if (index >= 0)
{
string foundText = settext.Substring(index, searchText.Length);
}
对于更复杂的搜索,您可以使用System.Text.RegularExpressions.Regex
类。它返回Match
个对象,而这些对象又包含描述实际匹配文本的Group
个对象。
编辑:
为了适应在找到的文本周围返回上下文,请使用以下替代方法:
string searchText = textBox1.Text;
int prefix = 5, postfix = 5;
int index = settext.IndexOf(searchText, StringComparison.OrdinalIgnoreCase);
if (index >= 0)
{
string foundText = settext.Substring(index, searchText.Length);
int contextStart = Math.Max(0, index - prefix);
int contextLength = Math.Min(
settext.Length - contextStart, searchText.Length + prefix + postfix);
string contextText = settext.Substring(contextStart, contextLength);
}
当然,您可以随意初始化prefix
和postfix
;为了这个例子,我在这里对它们进行了硬编码。