如何确定我的字符串是否包含“微”Unicode字符?

我有一个带有实验室数据的Excel电子表格,如下所示:

µg/L (ppb) 

我想测试希腊字母“μ”的存在,如果发现我需要做一些特别的事情。

通常,我会写这样的东西:

 if ( cell.StartsWith(matchSequence) ) { //.. <-- universal symbol for "magic" :) } 

我知道框架中有一个Encoding API,但是我应该只将它用于这个边缘情况还是仅仅从字符映射中复制希腊微符号?

我如何测试这个unicode角色的存在? 角色地图看起来像一个“便宜”的修复,以后会咬我(我为一家跨国公司工作)。

我想做一些可维护的东西,而不仅仅是一些疯狂的数学 – 巫毒转换,只适用于这种边缘情况。

我想我在这里要求最佳实践建议。

谢谢!

您需要计算出您感兴趣的unicode字符,然后您可以在带有转义序列的代码中表示它。

例如,μ是U + 00B5,所以你只需要:

 if (text.Contains("\u00b5")) 

您可以从charmap或Unicode代码图表中找到Unicode值。

micro μ的Unicode代码点是U + 00B5,不同于“希腊字母mu”μ,即U + 03BC。 所以你可以使用“\ u00b5”找到它,也可能同样寻找“\ u03bc” – 它们看起来一样,所以创建电子表格的人可能使用了错误的!

您可以从字符映射中显示的数字等效项创建一个字符(显示为“P”的U + 0050)。 要做到这一点,只需检查包含:

  string value; if (value.Contains(Char.ConvertFromUtf32(0x0050))) ; 

C#代码文件通常以utf8编码,因为该语言使用此编码。 c#(和其他.NET语言)中的所有字符串和strign文字都以utf16编码。 因此,您可以安全地从字符映射中复制微字符。 您还可以将其整数值用作unicode文字,如0x1234。