C#如何用单行代码提取字符串@符号前部分的最后10位字符
C# 单行实现方案
最简写法(适配C# 8.0+版本,和原有逻辑完全一致)
string ani = value.Split('@')[0][^10..];
写法说明:
- 先用
Split('@')[0]直接提取@符号之前的前缀子串,替代手动调用IndexOf+Substring的写法,逻辑更直观 [^10..]是C# 8.0引入的范围运算符,作用是取字符串的最后10位,等效于原有逻辑里的Substring(ani2.Length - 10)
兼容低版本C#的单行写法
如果你用的是C# 8.0之前的版本,不支持范围运算符,可以用嵌套Substring实现:
string ani = value.Substring(0, value.IndexOf("@")).Substring(value.Substring(0, value.IndexOf("@")).Length - 10);
鲁棒性优化版本(适配边界场景)
上述两种写法都默认输入一定包含@、且@之前的子串长度≥10,如果要兼容@不存在、前缀不足10位的场景,避免抛出异常,可以用如下写法:
// 前缀不足10位时直接返回整个前缀,你也可以根据需求调整返回逻辑 string ani = value.Split('@')[0] is string prefix && prefix.Length >= 10 ? prefix[^10..] : prefix;
内容的提问来源于stack exchange,提问作者aLy0sha
相关产品推荐
相关产品推荐

