繁体   English   中英

在机器对机器通信场景中使用的正确字符串比较值是什么?

[英]What is the right string comparison value to be used in a machine to machine communication scenario?

考虑一个场景,您正在实现旨在用于机器对机器通信的代码。 典型的例子是在 web API 操作方法中执行的代码。

假设您要在字符串之间执行完全匹配; 也许您有一个用户列表,并且您希望找到一个提供用户名的特定用户:

List<User> users = ....
const string username = "user-123";
var user = users.Find(u => string.Equals(username, u.UserName));

在这样的场景中,我应该使用StringComparison.Ordinal还是StringComparison.InvariantCulture

根据我的理解,由于我想在两个字符串之间执行完全匹配,所以这里的正确选择是StringComparison.Ordinal

两个字符串Straßestrasse之间的文化敏感比较的典型示例,其中两个字符串由于语言规则被认为是相等的,似乎不适合这里。

这个假设正确吗?

如果这是正确的,您能否提供一个示例,说明使用不变文化而不是序数比较是正确的选择?

只是为了澄清,我问是因为我正在开发一个代码库,其中有大量使用不变文化的字符串比较。 其中许多情况是指在机器对机器通信场景中执行的精确字符串匹配 所以我想确保清楚地理解正确选择字符串比较值背后的基本原理。

从提供的详细信息看来,您的假设是正确的 - 您想找到名称为“Bob”的特定用户。 “Bób” 是不同的用户,不应该匹配,即您实际上是在尝试匹配两个符号,而不是用户名的读取方式。

但是,如果您正在查找街道名称,您可能想要求代码将“strasse”和“Straße”视为相同,因为您正在进行语言匹配,即客户是否会在一样的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM