C# 如何在使用C进行搜索后从原始字符串中获取搜索结果#
我在这里尝试的是,我可以在C# 如何在使用C进行搜索后从原始字符串中获取搜索结果#,c#,asp.net,search-engine,C#,Asp.net,Search Engine,我在这里尝试的是,我可以在Textbox1.Text中显示包含字符串的文件路径,但我无法获取并显示该文件中的字符串 private void Search_Click(object sender, EventArgs e) { string[] filePaths = Directory.GetFiles(@"C:\Users\abcdq\Downloads\Documents\", "*.pdf", SearchOption.AllDirectories); for (int
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]);
}
}
}
private void Search\u单击(对象发送者,事件参数e)
{
string[]filepath=Directory.GetFiles(@“C:\Users\abcdq\Downloads\Documents\”、“*.pdf”、SearchOption.AllDirectories);
for(int i=0;i
例如:在account.pdf中,它有:
新用户?对于新用户,您将需要在
页面右侧包含以下信息:支持参考-
这是您与我们签订的支持合同号,例如DM1234或RH1234。
公司名称–这必须是我们所知道的与您匹配的确切名称
您的支持参考。显示名称–您的姓名,这将
当您使用网站中的某些表单时,将自动填写。
电子邮件和电子邮件确认–您的电子邮件地址,这将成为您的
用户名。密码–至少由6个字符组成的密码
(字母、数字和符号)
电子邮件确认
时,结果必须返回给我字符串作为电子邮件确认
而不是作为电子邮件确认
电子邮件和电子邮件确认–您的电子邮件地址
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);
}
当然,您可以随意初始化
前缀
和后缀
;为了示例,我在这里硬编码了它们。由于字符串的数量很大,我仍然在寻找最快的搜索方法。正如我在互联网上所做的调查,Contains()比IndexOf()运行得更快。好吧,a)我怀疑你的“互联网调查”是否能告诉你真实世界中代码的实际性能,b)如果你需要知道实际匹配的文本,那么Contains()
是否比IndexOf()快并不重要
因为Contains()
方法不会告诉您这一点。您是否希望代码速度快,但不满足您的要求?或者是速度较慢但能做你想做的事情的代码?(并不是说你必须选择,但如果你选择了…)那太好了。如何在我的线程中处理案例2?在第一种情况下,您的代码运行得非常好。但是,它现在只解决了我一半的问题。对不起……你问题的第二部分语法不正确,所以我(仍然)不明白。除了简单地从索引中减去一些数字,然后在子字符串的总长度中添加一些数字之外,您还想做什么?也就是说,无论如何,在同一个帖子中发布两个问题都不是一个好主意,因为这会使回答过程复杂化,并且会冒着答案没有注意到问题的风险。我知道,你应该把第二部分作为一个新的问题发布,用你所得到的作为你的出发点。很抱歉给你带来不便,我的英语可能不好。所以我想要的是:5个字符+电子邮件确认+5个字符作为电子邮件和电子邮件确认–您的