文字列の途中からカルチャに依存した「starts-with」操作を実行するにはどうすればよいですか?
比較的あいまいな要件がありますが、BCLを使用して可能であると思われます。 コンテキストとして、日付/時刻文字列を野田時間で解析しています。入力文字列内の自分の位置に論理カーソルを保持しています。したがって、完全な文字列は「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; // e followed …