如何读取所有文件内容并使用C#在文件内容中查找字符串?
我在string
阵列中列出了files
(.aspx,.cs,.html
等)。 我阅读了file
的所有内容。直到这里还好!如何读取所有文件内容并使用C#在文件内容中查找字符串?
我想要做什么是我想要搜索特定字符串
EG:
<meta name="description" content="NOINDEX" />
<meta name="keywords" content="NOINDEX" />
通过文件(S)的列表循环和获取文件的内容和检查是否contains
搜索字符串。
foreach (string item in strFiles)
{
innerList = item.Split(',');
if(!string.IsNullOrEmpty(innerList[0]))
{
fileList.Add(innerList[0]);
fileContents = File.ReadAllText(innerList[0].Replace("\\\\","\\"));
//if(fileContents.Contains(""))
if (fileContents.IndexOf(strToSearch) != -1)
{
Console.WriteLine("string contains strsearch");
}
}
}
上面的代码遍历所有files
和一个读取所有文件中的一个内容,但是,我不能够比较/找到文件内容完全匹配的字符串。
由于文件内容/换行字符等额外的空间
样品 'fileContent' 字符串:
<%@ Page Title="" Language="C#" MasterPageFile="~/_masterpages/MasterPage.master" AutoEventWireup="true" CodeFile="ChangePassword.aspx.cs" Inherits="Account_ChangePassword" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<meta name="description" content="NOINDEX" />
<meta name="keywords" content="NOINDEX" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentHeaderNav" Runat="Server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ContentBody" Runat="Server">
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="ContentToggleBox" Runat="Server">
</asp:Content>
<asp:Content ID="Content5" ContentPlaceHolderID="ContentBottom" Runat="Server">
</asp:Content>
样品 '搜索字符串':
<meta name="description" content="NOINDEX" /><meta name="keywords" content="NOINDEX" />
任何建议,请... ...!
帮助感谢!
您可以搜索使用正则表达式
foreach (string item in strFiles)
{
innerList = item.Split(',');
if(!string.IsNullOrEmpty(innerList[0]))
{
fileList.Add(innerList[0]);
fileContents = File.ReadAllText(innerList[0].Replace("\\\\","\\"));
if(Regex.IsMatch(fileContents,@"<meta[^>]*name=""description""[^>]*content=""NOINDEX""[^*]*/>\s*<meta[^>]*name=""keywords""[^>]*content=""NOINDEX""[^*]*/>"))
{ Console.WriteLine("string contains strsearch");
}
}
}
}
如果要替换它像您可以使用替换:
Regex.Replace(fileContents,@"<meta[^>]*name=""description""[^>]*content=""NOINDEX""[^*]*/>\s*<meta[^>]*name=""keywords""[^>]*content=""NOINDEX""[^*]*/>", ReplacementString)
我有标签列表,这是从'filecontent'搜索字符串如何匹配这些字符串/内容?我的意思是如何为用于比较数据库的字符串添加正则表达式? –
以及你也可以使用正则表达式,你可以为标签创建一个regularexpressions列表并在内容循环搜索它们:'MyTags.ForEach(t => AppendResult(t));','Public AppendResult(string x ){if(Regex.IsMatch(fileContents,x)) {Console.WriteLine(“string contains strsearch”);}}' –
您能否告诉我正则表达式中使用的符号的含义?我是新来的...... :) –
我做了类似的没有的东西时,我写了一个小程序,以不久前找到隐藏在其他英文单词中的英文单词,如果您从“外”单词中删除“内”单词,如果结果仍然是英文单词(是的,我确实有时会感到无聊)
结果是一个我认为与你有关的小博客帖子,主要是因为我正在加载一个TON文件并搜索它们。
正如你所看到的,我没有使用并行执行,以加快这一进程,这东西给我结果小于50ms,这在我的书是可以接受的:)
希望这给你需要什么!
你没有得到任何结果的原因是,indexof-方法也验证字符如\ r \ n(换行符等)。你必须把它们放到你的搜索字符串:) – Jannik
它更好地使用RegularExpressions,因为它可以检测到所有的变化,如空格,额外的属性,... –