2009-09-08 56 views
3

我有實驗數據的Excel電子表格,看起來像這樣:我如何知道我的字符串是否包含「micro」Unicode字符?

µg/L (ppb) 

我想測試希臘字母「μ」的存在,如果找到我需要做一些特別的東西。

通常情況下,我會寫這樣的事:

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

我知道有在框架的編碼API,但我應該使用它只是這一個邊緣的情況下,或只是複製希臘微符號從人物地圖?

我該如何測試這個unicode字符的存在?字符映射看起來像是一個「便宜」的修復,稍後我會咬我(我爲一家跨國公司工作)。

我想做一些可維護的事情,而不僅僅是一些瘋狂的數學 - 巫術轉換,只適用於這種邊緣情況。

我想我在這裏要求最佳實踐建議。

謝謝!

回答

12

你需要計算出你感興趣的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

9

microμ的Unicode代碼點是U + 00B5,它與U + 03BC中的「希臘字母μ」μ不同。因此,您可以使用「\ u00b5」來查找它,並且還可能查找「\ u03bc」 - 它們看起來一樣,所以創建電子表格的人可能會使用錯誤的!

+0

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

0

C#代碼文件通常使用utf8編碼,因爲該語言使用的是此編碼。所有字符串和c#中的文字(以及其他.NET語言)均使用utf16編碼。所以你可以安全地從字符映射中複製微字符。 您也可以使用其整數值作爲unicode文字,如0x1234。

1

您可以在Character Map中爲您顯示的數字等同地創建一個Char(顯示爲'P'的U + 0050)。要做到這一點只需選中包含:

  string value; 
      if (value.Contains(Char.ConvertFromUtf32(0x0050))) 
       ; 
相關問題