0

我正在尝试不区分大小写地匹配发送到我的 ASP.NET 应用程序的请求 URL,因为机器人或用户可能会错误地请求非规范表单,我需要重定向它们。

哪一种比较模式在语义上是最佳选择?

StringComparison.OrdinalIgnoreCase
StringComparison.InvariantCultureIgnoreCase
StringComparison.CurrentCultureIgnoreCase

Ordinal可能是限制性的,因为它进行代码点匹配。可能无法解释所有语言变化。CurrentCulture似乎不适合 URL,因为 URL 不应该是特定于文化的。InvariantCulture也不完全有意义,因为它代表了地球上不存在的类似英语的文化。我宁愿不将它用于面向用户的字符串,甚至不用于浏览器中的 URL。

哪种模式是正确的?

4

1 回答 1

1

正如您所指出的,没有完美的解决方案。我一直使用InvariantCulture并且对结果感到满意。但是,我的 URL 通常是英文或类似英文的,所以很难遇到问题。

另一种可能性是编写一个处理程序或模块来拦截请求并从 HTTP 标头中获取用户的文化。然后它可以利用这种文化进行转型。也许。

这是您可以永远花费的事情之一。我刚刚选择InvariantCulture并认为如果我有问题我会重新考虑这个决定。到目前为止,没有人注意到。至少,没有人抱怨它。

于 2013-07-26T16:25:36.370 回答