.NET Framework 2.0 の string のバグ?
今、C# の string クラスのインターフェースを真似て BREW 用の文字列クラスを作っている関係で、string クラスの仕様を一通り調べてたんだけど、なぜか string.LastIndexOf() がおかしな動作をする。
string str = "あいうえお"; // -1 str.IndexOf("あ", 5); // -1 str.IndexOf('あ', 5); // 0 str.LastIndexOf("あ", 5); // 例外? ← 0 が返されて欲しい、もしくは↑の行で例外を投げて欲しい str.LastIndexOf('あ', 5); // 0 str.IndexOf("", 0); // 5 str.IndexOf("", 5); // 0 str.LastIndexOf("", 0); // 4? ← 5 が返されて欲しい str.LastIndexOf("", 5);
- 検索対象が string の場合は、str.Length の位置を検索してもちゃんと検索出来て、char の場合は例外が投げられる。
- string.Empty を渡すと本来は startIndex の値が返されるのだけれども、str.Length の位置を渡すと、str.Length - 1 の値が返される。
わんくまの掲示板にも投稿してみたんだけど、これが仕様なのかバグなのか分からないという罠。
http://f57.aaa.livedoor.jp/~jeanne/bbs/faq.cgi?mode=al2&namber=8362
これ、どうやって実装すりゃええのよ……(;´Д`)