如何在C#中获取Font Awesome所有图标类名并生成列表或数组
方案对比与最优实现推荐
两种提取方案的优劣对比
- 从CSS文件提取:更稳定、准确率更高,是首选方案。Font Awesome的CSS文件里所有图标类名都是固定格式,没有动态渲染的内容,提取逻辑简单,不会因为页面结构更新出错。
- 从速查表页面提取:不推荐,页面内容是前端动态渲染的,直接爬取静态HTML拿不到完整的图标列表,需要处理JS渲染逻辑,而且官方页面结构更新的话提取逻辑就会失效,维护成本高。
具体实现步骤(CSS提取方案)
第一步:准备CSS文件
下载Font Awesome v5的本地CSS文件(比如all.min.css或者单独的font-awesome.css),直接本地处理即可。
第二步:匹配规则设计
用正则匹配所有符合规则的图标类名,匹配规则可以用fa-[\w-]+,匹配后过滤重复类名即可。
第三步:代码示例
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.RegularExpressions; class FontAwesomeIconExtractor { static void Main() { // 替换为你的Font Awesome CSS文件本地路径 string cssFilePath = @"C:\local\path\font-awesome.min.css"; string cssContent = File.ReadAllText(cssFilePath); // 正则匹配所有fa-开头的图标类名 var regex = new Regex(@"fa-([a-z0-9-]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase); var matches = regex.Matches(cssContent); // 去重后存入List List<string> iconClassNames = matches .Cast<Match>() .Select(m => m.Value) .Distinct() .ToList(); // 若需要带样式前缀(比如fas fa-xxx)可自行拼接 // List<string> fullClassNames = iconClassNames.Select(c => $"fas {c}").ToList(); Console.WriteLine($"共提取到{iconClassNames.Count}个图标类名"); } }
注意事项
如果只需要特定风格的图标,可以在匹配后过滤对应的前缀类即可,比如品牌图标前缀是
fab、实心图标前缀是fas、空心图标前缀是far,按需筛选即可。
内容的提问来源于stack exchange,提问作者monika-115
相关产品推荐
相关产品推荐

