检查字符串是否包含指定的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”。
这真的不是我的一杯茶。我将不胜感激任何帮助。
答案 0 :(得分:4)
如果我要描绘一个愤怒的Unicode字符,这将是我的赌注:
ლ(〜•︿•〜)つ︻̷┻̿═━一
所以要回答你的问题,那就是检查字符串中的 rage 你可以简单地说:
private bool ContainsInvalidCharacters(string name)
{
return name.IndexOf("ლ(~•̀︿•́~)つ︻̷┻̿═━一") != -1;
}
)
答案 1 :(得分:2)
这是你想要的吗?
public static bool ContainsInvalidCharacters(string name)
{
return name.IndexOfAny(new[]
{
'\u0001', '\u0002', '\u0003',
}) != -1;
}
和
bool res = ContainsInvalidCharacters("Hello\u0001");
请注意使用'\uXXXX'
:'
表示char
而不是string
。
答案 2 :(得分:0)
同时检查
/// <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;
}