假设您有一个int键,当显示并与其他键一起排序时,当然将按照自然数顺序排序。
因此,要获得"逆",您可以编程…
int InverseSortKey = Int32.MaxValue - ArbitraryIntKey;
问题是:如何得到一个类似的"逆"值,但字符串?
的例子:
string InverseSortKey = "ZZZZZZZZZ" - ArbirtraryStringKey; // Of course this don't compile.
我希望你能明白。
朴素的解决方案(更新-如果您知道所有字符串的最大长度)
String data;
StringBuilder resultBuilder = new StringBuilder(maxLength);
for (int i = 0; i < maxLength; i++)
{
Char c = i < data.length ? data[i] : 0;
resultBuilder.Append(Char.MaxValue - c);
}
String result = resultBuilder.ToString();
没有考虑到字符串排序可能因区域性而异的事实,并且不一定匹配字符的数值。完整的解决方案将按排序顺序获取所有字符有效字符序列(在这些字符串的特定预期编码中)的有序列表,然后为每个字符选择与之相反的字符。
进一步的免责声明:不要使用此解决方案,除非您可以假设字符串是单字节编码并按数字顺序精确排序。