如何查找包含以@“”开头的字符串的目录文件;任意字符串”&#x9

本文关键字:字符串 何查找 文件 amp#x9 任意 开头 包含 查找 | 更新日期: 2023-09-27 18:30:04

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

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

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

我试过低于

  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"这样的单词&x9’

如何查找包含以@“”开头的字符串的目录文件;任意字符串”&#x9

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

 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);
            }
        }
    }

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

 Regex rule = new Regex(@"('' |[^ ])+'$#x9'b");

代码可以修改为

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