例如,我从REST API收到具有这种样式的文本
𝓗𝓸𝔀𝓻𝓮𝓶𝓸𝓿𝓮]?
𝐻𝑜𝓌𝓇𝑒𝓂𝑜𝓋𝑒]?
但是这不是斜体,粗体或带下划线的,因为它是字符串类型。这种文本使我的Regex ^[a-zA-Z0-9._]*$
我想规范化在标准字符串中收到的此字符串,以使我的Regex仍然有效。
您可以使用Unicode兼容性规范化形式,该形式使用Unicode自己的(有损)字符映射将类似字母的字符(除其他外)转换为简化的等价形式。
例如,在python中:
>>> from unicodedata import normalize
>>> normalize('NFKD','𝓗𝓸𝔀 𝓽𝓸 𝓻𝓮𝓶𝓸𝓿𝓮 𝓽𝓱𝓲𝓼 𝓯𝓸𝓷𝓽 𝓯𝓻𝓸𝓶 𝓪 𝓼𝓽𝓻𝓲𝓷𝓰')
'How to remove this font from a string'
# EDIT: This one wouldn't work
>>> normalize('NFKD','нσω тσ яємσνє тнιѕ ƒσηт ƒяσм α ѕтяιηg?')
'нσω тσ яємσνє тнιѕ ƒσηт ƒяσм α ѕтяιηg?'
编辑:请注意,这仅适用于样式形式(上标,黑体字,填充宽度等),因此您的第三个示例使用非拉丁字符,不能分解为ASCII。
EDIT2:我不知道您的问题是特定于C#的,String.Normalize的here's the documentation就是这样:
string s1 = "𝓗𝓸𝔀 𝓽𝓸 𝓻𝓮𝓶𝓸𝓿𝓮 𝓽𝓱𝓲𝓼 𝓯𝓸𝓷𝓽 𝓯𝓻𝓸𝓶 𝓪 𝓼𝓽𝓻𝓲𝓷𝓰"
string s2 = s1.Normalize(NormalizationForm.FormKD)