我有一个带有街道名称的 SortedList
Dim orderedListStreet As New Generic.SortedList(Of String, String)(StringComparer.CurrentCulture)
让我们举个例子,列表已经包含“
Hauptstrasse
”如果我添加“
Hauptstraße
”,它会抛出一个异常 -> Key does already exist
有没有人知道如何添加“
Hauptstrasse
”和“Hauptstraße
”? 最佳答案
您可以使用将它们视为不同的比较器。在德国,我希望 Hauptstrasse 和 Hauptstraße 是同一条街道,因此德国文化将它们视为平等是合乎逻辑的。
使用哪一个取决于您的需求 - 最快的是 StringComparer.Ordinal
或 StringComparer.OrdinalIgnoreCase
。
如果您想要区分文化的排序,但希望将您的文化认为相同的两个不同字符串视为不同的字符串,那么一种解决方案是实现您自己的比较器,例如:
int MyComparer(string x, string y)
{
var result = StringComparer.CurrentCulture.Compare(x,y);
if (result == 0) result = StringComparer.Ordinal.Compare(x,y);
return result;
}
这种基于 CurrentCulture 的排序,但使用序数排序来打破关系(如果它不满足您的需要,您可以用其他东西替换它)。
关于.net SortedList 与 StringComparer 和德语变音,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19788860/