如何组合使用substring和indexOf截取指定位置到首个逗号间的字符串
C# 字符串截取问题解决方案
需求
给定字符串:"asTyped:fTestManager.Jobs.TestReplications.TestDataReplicationsJob,Version=1.0.0.0,"
需提取前8个字符之后、第一个逗号之前的内容,最终输出:"TestManager.Jobs.TestReplications.TestDataReplicationsJob"
正确实现代码
方案1:索引截取法(性能最优)
string tmp = "asTyped:fTestManager.Jobs.TestReplications.TestDataReplicationsJob,Version=1.0.0.0,"; // 定位第一个逗号的索引位置 int firstCommaPos = tmp.IndexOf(','); // 从索引9的位置开始截取,截取长度为第一个逗号位置减9 string target = tmp.Substring(9, firstCommaPos - 9);
方案2:拆分截取法(可读性更高)
string tmp = "asTyped:fTestManager.Jobs.TestReplications.TestDataReplicationsJob,Version=1.0.0.0,"; // 按逗号拆分取第一个片段,再移除前9位固定前缀 string target = tmp.Split(',')[0].Remove(0,9);
原代码问题说明
- 你计算的
tmp.Substring(9).Length是原字符串第9位到末尾的总长度,包含了逗号后的版本号内容,本身就不是目标内容的长度 - 单参数的
Substring方法会从传入索引一直截取到字符串末尾,你的写法最终等价于直接返回tmp.Substring(9),自然会包含不需要的后缀内容
内容的提问来源于stack exchange,提问作者aLy0sha
相关产品推荐
相关产品推荐

