检查字符串是否包含 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 字符的愤怒,那将是我的赌注:
ლ(~•̀〈•́~)つ【̷┻̿═━一
因此,要回答您的问题,即检查字符串是否存在这种愤怒,您可以简单地:
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;
}