Delphi XEとC++Builder XEで「々」の動作を確認しました。

.NET Framework 2.0以降では「々」の位置を間違えるらしい。(「愛が重ならない.NET Framework 2.0 – 新日々此何有哉」より。)

Console.WriteLine("{0}", "愛々,1,2,3".IndexOf(",")); //=> 1

Delphi XEとC++Builder XEで動作を確認しました。

# .Net FrameworkのIndexOfはインデックスが0から始まりますが、
# Delphi/C++BuilderのPosはインデックスが1から始まります。

Delphi XEの場合

Writeln(Pos('愛', '愛々,1,2,3')); //=>1
Writeln(Pos('々', '愛々,1,2,3')); //=>2
Writeln(Pos(',', '愛々,1,2,3'));  //=>3
Writeln(Pos('1', '愛々,1,2,3'));  //=>4

C++Builder XEの場合

std::cout << UnicodeString("愛々,1,2,3").Pos("愛") << std::endl; //=>1
std::cout << UnicodeString("愛々,1,2,3").Pos("々") << std::endl; //=>2
std::cout << UnicodeString("愛々,1,2,3").Pos(",") << std::endl; //=>3
std::cout << UnicodeString("愛々,1,2,3").Pos("1") << std::endl; //=>4

Delphi XEとC++Builder XEは問題ないようです。
(.NET Frameworkは詳しくないので、勘違いがあるかもしれません。)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください