检查字符串是否包含 Unicode 字符的愤怒

本文关键字:字符 愤怒 Unicode 包含 字符串 是否 检查 | 更新日期: 2023-09-27 18:35:07

检查字符串是否包含指定的Unicode字符的最佳方法是什么?我的问题是我无法解析字符串/字符以格式化''u[字节][字节][字节][字节]。我在 StackOverflow 上遵循了许多教程和线程,但是当我有这样的方法时:

private bool ContainsInvalidCharacters(string name)
{
    if (translation.Any(c => c > 255))
    {
        byte[] bytes = new byte[name.Length];
        Buffer.BlockCopy(name.ToCharArray(), 0, bytes, 0, bytes.Length);
        string decoded = Encoding.UTF8.GetString(bytes, 0, name.Length);
        (decoded.Contains("'u0001"))
        {
            //do something
        }
}

我得到的输出如下:"c''0o''0n''0t''0i''0n''0g''0u''0t''0"。

这真的不是我的那杯茶。我将不胜感激任何帮助。

检查字符串是否包含 Unicode 字符的愤怒

如果我要想象 Unicode 字符的愤怒,那将是我的赌注:

ლ(~•̀〈•́~)つ【̷┻̿═━一

因此,要回答您的问题,即检查字符串是否存在这种愤怒,您可以简单地:

private bool ContainsInvalidCharacters(string name)
{
    return name.IndexOf("ლ(~•̀︿•́~)つ︻̷┻̿═━一") != -1;
}

;)

这是你想要的吗?

public static bool ContainsInvalidCharacters(string name)
{
    return name.IndexOfAny(new[] 
    {
        ''u0001', ''u0002', ''u0003', 
    }) != -1;
}

bool res = ContainsInvalidCharacters("Hello'u0001");

注意''uXXXX'的使用:'表示char而不是string

也检查一下

    /// <summary>
    /// Check invalid character based on the pattern
    /// </summary>
    /// <param name="text">The string</param>
    /// <returns></returns>
    public static string IsInvalidCharacters(this string text)
    {
        string pattern = @"[^'x09'x0A'x0D'x20-'xD7FF'xE000-'xFFFD'x10000-x10FFFF]";
        var match = Regex.Match(text, pattern, "");
        return match.Sucess;
    }