C#如何截取字符串最后一个逗号之后的前6个字符(不含逗号)
问题原因
String.Substring(startIndex, length)方法的第一个参数为截取的起始索引,你原先的代码直接将LastIndexOf(',')的结果作为起始索引,刚好对应逗号本身的位置,因此截取结果会包含逗号。
正确实现
基础版本(默认逗号后字符长度≥6)
直接在逗号索引基础上加1,跳过逗号本身再截取6个字符即可:
string last = str.Substring(str.LastIndexOf(',') + 1, 6);
兼容边界场景版本
如果存在最后一个逗号后字符不足6个的情况,为了避免抛出索引越界异常,可先动态计算合法的截取长度:
int commaPos = str.LastIndexOf(','); // 跳过逗号取起始位置 int startPos = commaPos + 1; // 截取长度取「需要的6个字符」和「剩余可用字符数」的较小值 int takeLength = Math.Min(6, str.Length - startPos); string last = str.Substring(startPos, takeLength);
效果验证
- 输入
VILLEDA URIBE,PAUL,BU2960,输出为BU2960,符合预期 - 输入
BENTANCOURT,MARIA,BU2960_1_1,输出为BU2960,符合预期
内容的提问来源于stack exchange,提问作者John Parham
相关产品推荐
相关产品推荐

