古い話になるけれど、C#8.0から、配列や数値インデックスを持つコレクションのスライス表記ができるようになった。
この表記ちょっと分かりづらかったので、簡単にまとめてみた。
ここでは、文字列を例に挙げる。
以下のような、文字列があった場合。
string s = "0123456789";
// ^n - 最後からn番目を表す
> s[^1]
'9'
// ..表記で範囲指定(スライス)
// [s..e]表記で、sはスタートインデックス,eはエンドインデックス+1
> s[..^1] // 0~最後から2番目
"012345678"
> s[1..4] // index 1~3
"123"
> s[3..] // index 3以降
"3456789"
> s[^3..] // 最後から3番目以降
"789"
> s[^5..^2] // 最後から5番目から最後から3番目
"567"
という感じ。
スライスの場合、[s..e]の表記で、sは含む,eは含まないという点に注意。