簡體   English   中英

檢查字符串是否包含大量Unicode字符

[英]Check if string contains rage of Unicode characters

檢查字符串是否包含指定的Unicode字符的最佳方法是什么? 我的問題是我無法解析字符串/字符以格式化\\ u [byte] [byte] [byte] [byte]。 我在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字符,這將是我的賭注氣極了:

ლ(〜•̀︿•́〜)つ︻̷┻̿═━一

因此,要回答您的問題,那就是檢查字符串是否存在這種憤怒,您可以簡單地:

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;
    }   

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM