public static string ExtractResourceDictionaries(string fileContents, out List<string> resourceDictionaryNames) { #region Extract resource dictionary list, remove resource dictionary from XAML file //Test string: <ResourceDictionary Source="Basic_Resources.xaml" /> //Pattern without escapes: \<ResourceDictionary(\s*?)Source(\s*?)=(\s*?)"(.*?)"(\s*?)/\> string pattern = "\\<ResourceDictionary(\\s*?)Source(\\s*?)=(\\s*?)\"(.*?)\"(\\s*?)/\\>"; ResourceDictionaryExtractor extractor = new ResourceDictionaryExtractor(); fileContents = Regex.Replace(fileContents, pattern, new MatchEvaluator(extractor.ExtractResourceDictionary)); resourceDictionaryNames = extractor.ResourceDictionaryNames; #endregion #region Remove empty resource dictionaries //Pattern without escapes: \<ResourceDictionary\>(\s*?)\<ResourceDictionary.MergedDictionaries\>(\s*?)\</ResourceDictionary.MergedDictionaries\>(\s*?)\</ResourceDictionary\> pattern = "\\<ResourceDictionary\\>(\\s*?)\\<ResourceDictionary.MergedDictionaries\\>(\\s*?)\\</ResourceDictionary.MergedDictionaries\\>(\\s*?)\\</ResourceDictionary\\>"; fileContents = Regex.Replace(fileContents, pattern, string.Empty); #endregion return fileContents; }
public static string ExtractResourceDictionaries(string fileContents, out List <string> resourceDictionaryNames) { #region Extract resource dictionary list, remove resource dictionary from XAML file //Test string: <ResourceDictionary Source="Basic_Resources.xaml" /> //Pattern without escapes: \<ResourceDictionary(\s*?)Source(\s*?)=(\s*?)"(.*?)"(\s*?)/\> string pattern = "\\<ResourceDictionary(\\s*?)Source(\\s*?)=(\\s*?)\"(.*?)\"(\\s*?)/\\>"; ResourceDictionaryExtractor extractor = new ResourceDictionaryExtractor(); fileContents = Regex.Replace(fileContents, pattern, new MatchEvaluator(extractor.ExtractResourceDictionary)); resourceDictionaryNames = extractor.ResourceDictionaryNames; #endregion #region Remove empty resource dictionaries //Pattern without escapes: \<ResourceDictionary\>(\s*?)\<ResourceDictionary.MergedDictionaries\>(\s*?)\</ResourceDictionary.MergedDictionaries\>(\s*?)\</ResourceDictionary\> pattern = "\\<ResourceDictionary\\>(\\s*?)\\<ResourceDictionary.MergedDictionaries\\>(\\s*?)\\</ResourceDictionary.MergedDictionaries\\>(\\s*?)\\</ResourceDictionary\\>"; fileContents = Regex.Replace(fileContents, pattern, string.Empty); #endregion return(fileContents); }