如何从字符串中提取特定Unicode字符并保存至数组或列表?
提取字符串中的HTML Unicode实体
你之前用Split的方式之所以会混入"test",是因为Split是按指定分隔符把整个字符串拆成片段,那些非实体的文本自然会被拆出来。要精准提取&#数字;格式的Unicode实体,用正则表达式是更合适的方案。
直接上可用的C#代码:
using System; using System.Collections.Generic; using System.Text.RegularExpressions; class Program { static void Main() { string input = "test 🔷 test 💙 test 🔹"; // 匹配&#开头、数字内容、;结尾的实体 Regex regex = new Regex(@"&#\d+;"); MatchCollection matches = regex.Matches(input); // 转换成List<string> List<string> emojiEntities = new List<string>(); foreach (Match match in matches) { emojiEntities.Add(match.Value); } // 或者转换成数组 string[] emojiArray = Array.ConvertAll(matches.Cast<Match>().ToArray(), m => m.Value); // 验证结果 foreach (var item in emojiEntities) { Console.WriteLine(item); } } }
代码说明:
- 正则模式
@"&#\d+;":&#匹配实体开头,\d+匹配一个或多个数字,;匹配实体结尾,精准锁定你要的Unicode实体格式。 Regex.Matches会返回所有符合模式的匹配结果,不会包含无关的"test"文本。- 可以根据需求把匹配结果转成
List<string>或者数组,方便后续遍历操作。
如果你的实体里可能包含十六进制数字(比如😀这种),可以把正则改成@"&#(?:\d+|x[0-9A-Fa-f]+);",这样就能同时匹配十进制和十六进制的HTML实体了。
内容的提问来源于stack exchange,提问作者JakeFromStateFarm
相关产品推荐
相关产品推荐

