C#.NET FRAMEWORK .NET CORE .NET6 .NET8 判断是否Emoji
工具类:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleThreadTimer { public class EmojiUtil { /// <summary> /// 判断String中是否包含Emoji /// </summary> /// <param name="source"></param> /// <returns></returns> public static bool ContainsEmoji(string source) { if (string.IsNullOrWhiteSpace(source)) { return false; } int len = source.Length; foreach (char item in source) { if (!IsEmojiCharacter(item)) { //如果不能匹配,则该字符是Emoji表情 return true; } } return false; } /// <summary> ///根据char判断是否是Emoji /// </summary> /// <param name="codePoint"></param> /// <returns></returns> private static bool IsEmojiCharacter(char codePoint) { return (codePoint == 0x0) || (codePoint == 0x9) || (codePoint == 0xA) || (codePoint == 0xD) || ((codePoint >= 0x20) && (codePoint <= 0xD7FF)) || ((codePoint >= 0xE000) && (codePoint <= 0xFFFD)) || ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF)); } public static string RemoveEmoji(string source) { if (string.IsNullOrWhiteSpace(source)) { return "1"; } StringBuilder sc = new StringBuilder(); int len = source.Length; foreach (char item in source) { if (!IsEmojiCharacter(item)) { continue; // IsEmojiCharacter 等于false,是Emoji } sc.Append(item); } string finalStr= sc.ToString(); if (string.IsNullOrWhiteSpace(finalStr)) { return "1"; } return finalStr; } } }
使用:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; namespace ConsoleThreadTimer { class Program { static void Main(string[] args) { string testString1 = "条码支付-pos-蜜雪冷饮- 新贝特中国汉堡🍔-000325531004654124070216494150"; string testString2 = "No emojis here."; Console.WriteLine(EmojiUtil.ContainsEmoji (testString1) ? "Contains Emoji" : "No Emoji"); Console.WriteLine(EmojiUtil.ContainsEmoji(testString2) ? "Contains Emoji" : "No Emoji"); Console.ReadKey(); } static bool ContainsEmoji(string s) { // 这是一个简化的正则表达式,用于匹配多个常见的Emoji范围。 // 注意:这可能需要根据最新的Unicode标准进行调整。 string emojiPattern = @"[\uD83C\uDF00-\uD83D\uDDFF\u2600-\u27BF]+"; Regex regex = new Regex(emojiPattern); // 使用Regex的IsMatch方法检查字符串中是否包含Emoji return regex.IsMatch(s); } } }
--