有没有快捷方式获取数组倒数第二个元素?如何实现最后两元素拼接?
嘿,这个需求挺常见的,我来给你分享几个简洁优雅的实现方案,既能满足通用方法的要求,又能轻松拿到你想要的结果!
首先明确核心需求:不管数组长度是3还是4(甚至更长),都要取倒数第二个和最后一个元素,用.拼接成字符串。下面是几种可行的方式:
1. 最直接的索引访问法(性能最优)
数组本身支持直接通过索引访问元素,倒数第二个元素的索引就是数组长度 - 2,最后一个是数组长度 - 1,直接拼接即可,这种方式没有额外的LINQ开销,效率最高:
public static string GetLastTwoJoined(string[] arr) { // 先做参数校验,避免空数组或者长度不足的情况 if (arr == null || arr.Length < 2) throw new ArgumentException("数组必须包含至少2个元素哦"); return $"{arr[arr.Length - 2]}.{arr[arr.Length - 1]}"; }
2. LINQ的TakeLast方法(简洁易读)
如果你用的是.NET Core 2.0+、.NET Framework 4.7.2+或者.NET 5及以上版本,可以直接用TakeLast(2)获取最后两个元素,再用string.Join拼接,代码非常清爽:
using System.Linq; // 别忘了引用LINQ命名空间 public static string GetLastTwoJoined(string[] arr) { if (arr == null || arr.Length < 2) throw new ArgumentException("数组必须包含至少2个元素哦"); var lastTwoElements = arr.TakeLast(2); return string.Join(".", lastTwoElements); }
3. 兼容老版本.NET的Skip方法
如果你的项目还在使用比较老的.NET版本(比如.NET Framework 4.7之前),TakeLast可能不支持,这时候可以用Skip(arr.Length - 2)跳过前面的元素,直接取最后两个:
using System.Linq; public static string GetLastTwoJoined(string[] arr) { if (arr == null || arr.Length < 2) throw new ArgumentException("数组必须包含至少2个元素哦"); var lastTwoElements = arr.Skip(arr.Length - 2); return string.Join(".", lastTwoElements); }
小提醒
不管用哪种方式,参数校验都是必要的,不然当数组为空或者只有1个元素时,会抛出索引越界的异常,提前做判断能让方法更健壮。
测试你给的例子:
- 传入
myArr1(长度3),会返回"S2.S3" - 传入
myArr2(长度4),会返回"S3.S4"
完全符合你的需求~
内容的提问来源于stack exchange,提问作者user9393635
相关产品推荐
相关产品推荐

