将字符串转换为序数大写或小写

Wou*_*ter 14 c# string lowercase ordinal uppercase

是否可以将字符串转换为序数大写或小写.类似于不变量.

string upperInvariant = "ß".ToUpperInvariant();
string lowerInvariant = "ß".ToLowerInvariant();
bool invariant = upperInvariant == lowerInvariant; // true

string upperOrdinal = "ß".ToUpperOrdinal(); // SS
string lowerOrdinal = "ß".ToLowerOrdinal(); // ss
bool ordinal = upperOrdinal == lowerOrdinal; // false
Run Code Online (Sandbox Code Playgroud)

如何实现ToUpperOrdinal和ToLowerOrdinal?

编辑:如何获取序数字符串表示?同样,如何获得不变的字符串表示?也许这是不可能的,因为在上述情况下它可能是模糊的,至少对于序数表示.

EDIT2:

string.Equals("ß", "ss", StringComparison.InvariantCultureIgnoreCase); // true
Run Code Online (Sandbox Code Playgroud)

"ß".ToLowerInvariant() == "ss"; // false
Run Code Online (Sandbox Code Playgroud)

Jam*_*ell 1

来自msdn

\n\n
\n

OrdinalIgnoreCase 属性返回的 StringComparer 将要比较的字符串中的字符视为使用不变区域性的约定转换为大写字符,然后执行与语言无关的简单字节比较。

\n
\n\n

但我猜这样做不会达到你想要的效果,因为简单地执行 "\xc3\x9f".ToUpperInvariant() 不会给你一个通常相当于 "ss" 的字符串。String.Equals 方法中一定有一些魔法可以处理Why \xe2\x80\x9css\xe2\x80\x9d equals \'\xc3\x9f\' 的特殊情况。

\n\n

如果您只担心德语文本,那么这个答案可能会有所帮助

\n