0

我一直在尝试通过RegEx.Split()C# 中的方法将一个字符串拆分为另一个字符串。数据或拆分器都可以有变音符号。

让我给你举个例子:

数据: education

分离器:

预期结果e//ducation

- 或者 -

数据: èdùcation

分离器: ed

预期结果: èd /ùcation

可能吗?如果是的话,你能帮我写这个模式吗?

4

1 回答 1

1

.NET 的正则表达式引擎中没有“忽略变音符号”的选项,但是可以通过使用 Unicode 标准格式-D(用于“分解”)来解决它。这是未经测试的

重音字符可以用两种方式表示:

  • 作为单个预先组合的代码点。例如。U+00F9(带坟墓的拉丁文小写字母 U)。
  • 作为一个基本代码点,后跟一个或多个组合字符。例如。U+0075, U-0300(拉丁文小写字母 U,结合重音)。

因此,如果您确保输入数据被分解(使用String.Normalise(normalization)传递NormalizationForm.FormD),并且模式中任何潜在的重音字符都被替换为

B\p{Mc}*

一个基本字符B,后跟 Unicode 类别“标记,间距组合”中的零个或多个代码点。

要在输出中包含与正则表达式匹配的文本,使其捕获,因此要匹配并捕获两者du使用(du\p{Mc}*).

于 2013-10-08T16:01:19.020 回答