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

时间:2009-09-08 21:14:01

标签: c# unicode

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

µg/L (ppb)

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

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

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

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

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

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

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

谢谢!

4 个答案:

答案 0 :(得分:12)

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

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

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

您可以从charmap或Unicode code charts找到Unicode值。

答案 1 :(得分:9)

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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