如何使用 C# 读取所有文件内容并在文件内容中查找字符串

本文关键字:文件 查找 字符串 何使用 读取 | 更新日期: 2023-09-27 18:37:02

我有一个string数组中的files.aspx,.cs,.html等)列表。我阅读了file的所有内容.直到这里还可以!

我想做的是我想搜索一个特定的字符串

例如:

<meta name="description" content="NOINDEX" />
<meta name="keywords" content="NOINDEX" />

通过循环浏览文件列表并获取文件内容并检查它是否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并逐个读取所有文件的内容,但是,我无法从文件内容中比较/找到确切的字符串。

由于文件内容/换行符等中的额外空间。

示例"文件内容"字符串:

<%@ 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" />

任何建议请...!

感谢帮助!

如何使用 C# 读取所有文件内容并在文件内容中查找字符串

不久

前我做了类似的事情,当时我写了一个小应用程序来查找隐藏在其他英语单词中的英语单词,如果你从"外部"单词中删除"inner"单词,如果结果仍然是一个英语单词(是的,我有时会感到无聊)

结果是一篇我认为与您相关的小博客文章,主要是因为我正在加载大量文件并搜索它们。

这是博客文章

如您所见,我确实使用并行执行来加快该过程,这在不到 50 毫秒的时间内给了我结果,这在我的书中是可以接受的:)

希望这能给你你需要的东西!

您可以使用正则表达式搜索替换

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)