LastIndexOf では、空の検索文字列の処理が改善されています
String.LastIndexOf と関連 API により、より大きな文字列内で長さ 0 の (または長さ 0 と同等の) サブ文字列を検索するときに、正しい値が返されるようになりました。
変更の説明
.NET Framework と .NET Core 1.0 から 3.1 では、呼び出し元が長さ 0 のサブ文字列を検索するときに、String.LastIndexOf と関連 API によって不正な値が返されることがありました。
Console.WriteLine("Hello".LastIndexOf("")); // prints '4' (incorrect)
ReadOnlySpan<char> span = "Hello";
Console.WriteLine(span.LastIndexOf("")); // prints '0' (incorrect)
.NET 5 以降では、これらの API によって LastIndexOf
の正しい値が返されます。
Console.WriteLine("Hello".LastIndexOf("")); // prints '5' (correct)
ReadOnlySpan<char> span = "Hello";
Console.WriteLine(span.LastIndexOf("")); // prints '5' (correct)
これらの例では、"Hello".Substring(5)
と "Hello".AsSpan().Slice(5)
の両方で空の文字列が生成されるため、5
は正しい答えです。これは、検索対象の空のサブ文字列と同等です。
変更理由
この変更は、.NET 5 の文字列処理に関する全般的なバグ修正作業の一環として行われました。 またこれは、Windows の動作と Windows 以外のプラットフォームの動作を統合するのにも役立ちます。 詳細については、dotnet/runtime#13383 および dotnet/runtime##13382 を参照してください。
導入されたバージョン
5.0
推奨アクション
何らかのアクションをとる必要はありません。 .NET 5 ランタイムでは、新しい動作が自動的に提供されます。
以前の動作を復元するための互換性スイッチはありません。
影響を受ける API
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示