2013-10-08 27 views
0

我一直試圖通過C#中的RegEx.Split()方法將字符串拆分爲另一個字符串。 數據或分離器都可以有變音符號。RegEx:將字符串拆分爲另一個字符串,其中包括變音符號

讓我給你舉個例子:

數據:education

分配器:

預期結果:e/du/cation

--O R--

數據:èdùcation

分配器:ed

預期結果:èd/ùcation

這可能嗎? 如果是這樣,你能幫我寫出模式嗎?

回答

1

在.NET的正則表達式引擎中沒有選擇「忽略變音符號」,但是可以通過使用Unicode常規形式-D(「decomposed」)來解決它。 這是未經測試的

重音字符可以以兩種方式表示:

  • 作爲單個預組成的代碼點。例如。 U + 00F9(帶墳墓的拉丁文小寫字母U)。
  • 作爲基本代碼點,後跟一個或多個組合字符。例如。 U + 0075,U-0300(拉丁文小寫字母U,組合Grave Accent)。

因此,如果可以確保數據被分解的輸入(使用String.Normalise(normalization)傳遞NormalizationForm.FormD),並且在圖案的任何潛在重音字符由

B\p{Mc}* 

取代後跟零個或多個基礎字符B Unicode類別「標記,間距組合」中的代碼點。

若要在輸出中包含與正則表達式匹配的文本使其捕獲,以匹配並捕獲du使用(du\p{Mc}*)

相關問題