【发布时间】:2017-05-18 21:30:27
【问题描述】:
是否可以将字符串转换为顺序大写或小写。类似不变量。
string upperInvariant = "ß".ToUpperInvariant();
string lowerInvariant = "ß".ToLowerInvariant();
bool invariant = upperInvariant == lowerInvariant; // true
string upperOrdinal = "ß".ToUpperOrdinal(); // SS
string lowerOrdinal = "ß".ToLowerOrdinal(); // ss
bool ordinal = upperOrdinal == lowerOrdinal; // false
ToUpperOrdinal 和 ToLowerOrdinal 如何实现?
编辑: 如何获得序数字符串表示?同样,如何获得不变的字符串表示?也许这是不可能的,因为在上述情况下它可能是模棱两可的,至少对于序数表示。
编辑2:
string.Equals("ß", "ss", StringComparison.InvariantCultureIgnoreCase); // true
但是
"ß".ToLowerInvariant() == "ss"; // false
【问题讨论】:
-
@diiN__________ 我不认为扩展方法的想法是 OP 需要帮助的。他们只是不知道这种方法的代码应该是什么。
-
我不是在询问扩展方法或字符串比较。仅如何获取序数字符串表示。
-
没有序号字符串 respresentation 因为序号比较意味着“比较每个字节”。
-
@TimSchmelter 那么为什么存在 StringComparison.OrdinalIgnoreCase,哪些字节区分大小写?
-
@Wouter 因为它首先将它们转换为大写。来自the docs OrdinalIgnoreCase 属性返回的TheStringComparer 将要比较的字符串中的字符视为使用不变区域性的约定转换为大写
标签: c# string uppercase lowercase ordinal