【发布时间】:2020-06-09 10:17:18
【问题描述】:
标题几乎可以解释自己,但假设我有这个:
string str1 = "microondas";
string str2 = "micrómetro";
bool comparison1 = str1.StartsWith("micro", StringComparison.InvariantCultureIgnoreCase);
bool comparison2 = str2.StartsWith("micro", StringComparison.InvariantCultureIgnoreCase);
但是,compare2 将返回 false。有没有一种简单的方法可以让它忽略变音符号、重音符号和波浪线(所以 ó 变成 o,ñ 变成 n)?如果它也不区分大小写,则奖励。
我知道有 CompareOptions.IgnoreNonSpace 可以满足我的要求,但我还没有找到在 StartsWith 中实现它的方法。 任何帮助表示赞赏!
【问题讨论】:
-
嗯,'ó' 和 'o' 是两个不同的字符
-
@MasoudKeshavarz String.Compare 无法回答它是否 StartsWith 的东西,并且 String.IndexOf 没有所需的重载。
-
@GSerg 我只是说 PO 可以使用链接中提供的
RemoveDiacritics函数。请看我的回答。 -
Those do NOT answer my question at all!- 你显然没有看过副本。 accepted answer 的第一行是,您可以使用适当的 CompareInfo,然后使用 CompareInfo.IndexOf(string, string, CompareOptions) 并根据 -1 检查结果。在您的情况下,您需要根据 0 检查结果。IndexOf 为零表示它以字符串开头。
标签: c#