簡體   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