【问题标题】:Unicode Char Boolean MatchingUnicode 字符布尔匹配
【发布时间】:2018-11-07 22:16:53
【问题描述】:

我有一个问题,一个字符被插入到一个我试图在填充数据集之前删除的数据集中。

我尝试复制 Char 并对其进行字符串匹配。它失败并被插入。

字符是:

另外,我还有一个:

'

我的字符串匹配:

if (KVP.Key != "'")
if (KVP.Key != " ")

其中 KVP 是字典中的 KeyValuePair

我想到的唯一过滤和删除方法是将字符转换为 Unicode 代码并直接查找。问题是,我找不到 Unicode 代码。

我想寻找类似的东西:

U+0061 = 'a'

如果我使用:

MessageBox.Show("U+" + char.GetNumericValue('a').ToString());

我明白了:

-1

然后我可以找到字符并匹配。我找不到此过程的转换方法。我需要一个带有 Unicode 值的查找表吗?还是已经有 C# 类?

【问题讨论】:

  • 谢谢,但寻找 char 特定匹配,而不是 char 是 Unicode。
  • 也许是我的浏览器(IE - 在工作中),但你的“字符是:”和“还有,我还有一个:”代码块没用。第一个是空白,第二个是某种单引号。你在问什么?您是否想弄清楚是什么让您感到困惑的晦涩字符(字符串中的字符)?遍历字符串并将每个字符输出为 4 位十六进制值。这将为您提供 Unicode 代码点值。
  • 里面有一个字符,是一个空白字符,如果您误解了帖子的基础,敬请见谅!
  • 我真的相信编辑问题以适应他人的解释是解决原始 OP 提出的问题的一种非常不充分的方法。当数据丢失时,问题不再一样!

标签: c# char boolean


【解决方案1】:

嗯,好像转换为字节可以解决问题:

MessageBox.Show(string.Format("U+{0:X4}", Convert.ToByte('a') ));

我明白了:

U+0061

所以我现在可以从字节到字符串级别进行检查:

string a = string.Format("U+{0:X4}", Convert.ToByte('a'));
if (a.Equals("U+0061")) throw new Exception("Char Match: " + a);

【讨论】:

  • 我会将 char 转换为 int。这样所有 unicode 字符都可以工作。使用:(int)'a'。
猜你喜欢
  • 2012-05-11
  • 1970-01-01
  • 2016-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-29
  • 2011-03-07
相关资源
最近更新 更多