首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检索包含以@"anystring"&#x9开头的字符串的目录文件

如何检索包含以@"anystring"&#x9开头的字符串的目录文件
EN

Stack Overflow用户
提问于 2016-01-12 06:16:22
回答 2查看 76关注 0票数 0

我在c:/dom/xml中有xml文件。我只想搜索所有包含文本或字符串的xml文件,以@"anystring“开头。

示例:下面的标记显示在xml文件中,我需要过滤包含文本的xml文件名。

<parameter ID="**@Id_name&#x9**;&#x9;" >

我试过在下面

代码语言:javascript
复制
  static void Main(string[] args)
    {
        string sourceFolder = @"C:\dom\Xml";
        string searchWord = "&#x9";

        List<string> allFiles = new List<string>();
        AddFileNamesToList(sourceFolder, allFiles);
        foreach (string fileName in allFiles)
        {
            string contents = File.ReadAllText(fileName);
            if (contents.Contains(searchWord))
            {
                Console.WriteLine(fileName);
            }
        }

        Console.WriteLine(" ");
        System.Console.ReadKey();
    }

    public static void AddFileNamesToList(string sourceDir, List<string> allFiles)
    {

        string[] fileEntries = Directory.GetFiles(sourceDir);
        foreach (string fileName in fileEntries)
        {
            allFiles.Add(fileName);
        }

        //Recursion    
        string[] subdirectoryEntries = Directory.GetDirectories(sourceDir);
        foreach (string item in subdirectoryEntries)
        {
            // Avoid "reparse points"
            if ((File.GetAttributes(item) & FileAttributes.ReparsePoint) != FileAttributes.ReparsePoint)
            {
                AddFileNamesToList(item, allFiles);
            }
        }

    }

但我需要像“@Anystring”这样的词

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-12 09:07:28

希望下面的代码能对你有所帮助。

代码语言:javascript
复制
 static void Main(string[] args)
    {
        string sourceFolder = @"C:\dom";
        string searchWord = "&#x9";            
        string regexPattern = @"@([A-Za-z0-9\-_]+).\&#x9";


        List<string> allFiles = new List<string>();
        AddFileNamesToList(sourceFolder, allFiles);
        foreach (string fileName in allFiles)
        {
            string contents = File.ReadAllText(fileName);
            if (showMatch(contents, regexPattern))
            {
                if (contents.Contains(searchWord))
                {
                    Console.WriteLine(fileName);
                }
            }
        }

        Console.WriteLine(" ");
        System.Console.ReadKey();
    }

    private static bool showMatch(string text, string expr)
    {
        Console.WriteLine("The Expression: " + expr);
        MatchCollection mc = Regex.Matches(text, expr);
        foreach (Match m in mc)
        {
            Console.WriteLine(m);
        }
        return mc.Count > 0;
    }

    public static void AddFileNamesToList(string sourceDir, List<string> allFiles)
    {

        string[] fileEntries = Directory.GetFiles(sourceDir);
        foreach (string fileName in fileEntries)
        {
            allFiles.Add(fileName);
        }

        //Recursion    
        string[] subdirectoryEntries = Directory.GetDirectories(sourceDir);
        foreach (string item in subdirectoryEntries)
        {
            // Avoid "reparse points"
            if ((File.GetAttributes(item) & FileAttributes.ReparsePoint) != FileAttributes.ReparsePoint)
            {
                AddFileNamesToList(item, allFiles);
            }
        }

    }
票数 1
EN

Stack Overflow用户

发布于 2016-01-12 08:45:17

您可以将Regex定义如下,并在代码中使用它。

代码语言:javascript
复制
 Regex rule = new Regex(@"(\\ |[^ ])+\$#x9\b");

可以将代码修改为

代码语言:javascript
复制
static void Main(string[] args)
{
    string sourceFolder = @"C:\dom\Xml";
    string searchWord = @"(\\ |[^ ])+\$#x9\b";
    Regex rule = new Regex(searchWord);

    List<string> allFiles = new List<string>();
    AddFileNamesToList(sourceFolder, allFiles);
    foreach (string fileName in allFiles)
    {
        string contents = File.ReadAllText(fileName);
        if (rule.IsMatch(contents))
        {
            Console.WriteLine(fileName);
        }
    }

    Console.WriteLine(" ");
    System.Console.ReadKey();
}

工作小提琴demo

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34736752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档