【.Net Core/.Net8教程】巧用 C# 8.0 切片语法:高效处理数组和字符串
C# 切片语法糖(使用 .. 和 ^)是在 C# 8.0 版本中引入的。这些新语法提供了更简洁的方式来对数组、字符串和其他实现了 System.Span<T> 接口的类型进行切片和索引操作。
1. 使用 ^
表示从尾部索引
^
符号用于从集合的尾部开始索引。
int[] array = { 10, 20, 30, 40, 50 };
// 取得最后一个元素
int lastElement = array[^1]; // 50
// 取得倒数第二个元素
int secondLastElement = array[^2]; // 40
2. 使用 ..
表示范围
范围操作符 ..
可以用于获取集合的子范围。
int[] array = { 10, 20, 30, 40, 50 };
// 取得前两个元素
int[] firstTwo = array[..2]; // { 10, 20 }
// 取得从索引 2 开始到末尾的元素
int[] fromThirdToEnd = array[2..]; // { 30, 40, 50 }
// 取得中间的元素(索引 1 到 3,不包括 3)
int[] middle = array[1..3]; // { 20, 30 }
3. 获取整个数组
可以使用 ..
不带任何参数来获取整个数组。
int[] array = { 10, 20, 30, 40, 50 };
// 返回整个数组
int[] allElements = array[..]; // { 10, 20, 30, 40, 50 }
4. 从特定索引开始到倒数索引结束
组合使用索引和范围。
int[] array = { 10, 20, 30, 40, 50 };
// 从索引 1 到倒数第二个元素(不包括倒数第一个)
int[] range = array[1..^1]; // { 20, 30, 40 }
5. 字符串切片
这些操作同样适用于字符串。
string text = "foolisunday 原创自八荒我为王@csdn.net";
// 取得前 11 个字符
string hello = text[..11]; // "foolisunday"
// 取得最后 9 个字符
string world = text[^9..]; // "@csdn.net"
// 取得从索引 12 开始到倒数第 9 个字符的范围
string subText = text[12..^9]; // "原创自八荒我为王"
6. 带有 Range
类型的复杂表达式
C# 中的 Range
类型可以用于创建自定义范围,并用于传递给方法。
int[] array = { 10, 20, 30, 40, 50 };
// 使用 Range 对象
Range customRange = 1..4;
int[] subArray = array[customRange]; // { 20, 30, 40 }
7. 带有 Index
类型的表达式
Index
类型允许创建基于正向或反向的索引。
int[] array = { 10, 20, 30, 40, 50 };
Index lastIndex = ^1;
int lastElement = array[lastIndex]; // 50
Index startIndex = 2;
int startElement = array[startIndex]; // 30