我如何知道我的字符串是否包含“micro”Unicode字符?

我如何知道我的字符串是否包含“micro”Unicode字符?

问题描述:

我有实验数据的Excel电子表格,看起来像这样:我如何知道我的字符串是否包含“micro”Unicode字符?

µg/L (ppb) 

我想测试希腊字母“μ”的存在,如果找到我需要做一些特别的东西。

通常情况下,我会写这样的事:

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

我知道有在框架的编码API,但我应该使用它只是这一个边缘的情况下,或只是复制希腊微符号从人物地图?

我该如何测试这个unicode字符的存在?字符映射看起来像是一个“便宜”的修复,稍后我会咬我(我为一家跨国公司工作)。

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

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

谢谢!

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

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

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

你可以找到从字符表,或从Unicode code charts的Unicode值。

+0

我要使用标签“乔恩 - 飞碟”,但我认为这可能是便宜:) – Chris 2009-09-08 21:21:19

+0

@乔恩:伟大工程!谢谢,你是明星! – Chris 2009-09-08 21:26:57

+0

@jon:有关系吗? – Chris 2009-09-08 21:34:44

microμ的Unicode代码点是U + 00B5,它与U + 03BC中的“希腊字母μ”μ不同。因此,您可以使用“\ u00b5”来查找它,并且还可能查找“\ u03bc” - 它们看起来一样,所以创建电子表格的人可能会使用错误的!

+0

+1好点,我会看看 – Chris 2009-09-08 21:27:32

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

您可以在Character Map中为您显示的数字等同地创建一个Char(显示为'P'的U + 0050)。要做到这一点只需选中包含:

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