【发布时间】:2020-03-13 19:12:12
【问题描述】:
伙计们,我怎样才能对 sharp-s 字符 (ß) 与 ss 进行正则表达式匹配,反之亦然?我尝试了不变的文化,但它没有返回匹配项。但是,如果我将 String.IndexOf() 与不变的文化一起使用,它是能够做到的。
Console.WriteLine("abcßßdefßßghi".IndexOf("ssss", StringComparison.InvariantCultureIgnoreCase) >=0);
var matches = Regex.Matches("abcßßdefßßghi", "ssss", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
Console.WriteLine(matches.Count);
// OUTPUT
True
0
我需要找到比赛开始的所有索引。这个想法是突出“匹配”的字符串。我正在寻找一种使用Regex.Match() 的干净方法,这比遍历字符串和子字符串等更可取。 TIA。
【问题讨论】:
-
出于搜索引擎优化的目的,Sharp-s 字符(
ß、ẞ)也称为 Eszett。对于那些不熟悉 sharp-s 字符的人来说,它的发音类似于ss,并且两者在书面德语中可以互换使用——因此在解析时需要能够将它们视为同义词一个字符串。 (ß在技术上更正确,但并非所有字体都支持它。) -
有趣的问题。而且,我很尴尬地承认,我至少能想到三个我编写本地化代码的案例,但我没有考虑到这一点。出于好奇,如果您将文化明确设置为
CurrentCultureIgnoreCase,并且当前的CultureInfo设置为例如,这是否有效?de-DE?
标签: c# regex localization cultureinfo