如何从字符串的中间执行对区域性敏感的“开始于”操作?
我有一个相对模糊的要求,但感觉应该可以使用BCL。 对于上下文,我正在解析Noda Time中的日期/时间字符串。我在输入字符串中的位置保持逻辑光标。因此,尽管完整的字符串可能是“ 2013年1月3日”,但逻辑光标可能位于“ J”处。 现在,我需要解析月份名称,并将其与区域性的所有已知月份名称进行比较: 文化敏感 不区分大小写 只是从光标的位置开始(不晚;我想查看光标是否正在“查看”候选月份名称) 很快 ...然后我需要知道使用了多少个字符 使用的当前代码通常可以正常运行CompareInfo.Compare。实际上是这样的(仅适用于匹配部分-真实代码中有更多代码,但与匹配无关): internal bool MatchCaseInsensitive(string candidate, CompareInfo compareInfo) { return compareInfo.Compare(text, position, candidate.Length, candidate, 0, candidate.Length, CompareOptions.IgnoreCase) == 0; } 但是,这取决于候选对象和我们比较的区域具有相同的长度。在大多数情况下都可以,但是在某些特殊情况下不可以。假设我们有这样的东西: // U+00E9 is a single code point for e-acute var text = "x b\u00e9d y"; int position = 2; …