[英]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.