C#中从含三个姓名的字符串移除指定姓名的实现疑问
处理三姓名字符串的三个拆分任务
先给个通用思路:把原始字符串拆成单个姓名的数组,这种方式比硬写索引更灵活易读,同时也提供字符串索引的实现方式供你选。
任务1:移除第一个姓名(你已实现,补充数组版)
你的代码完全没问题,这里给个数组拆分的实现,逻辑更清晰:
string name = "Hunter Georgie Martin"; // 按空格拆分,自动忽略空项(避免多个空格的情况) string[] nameParts = name.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries); // 跳过第一个元素,拼接剩下的内容 string noFirstName = string.Join(" ", nameParts.Skip(1)); Console.WriteLine(noFirstName); // 输出:Georgie Martin
任务2:移除第二个姓名
数组实现法(推荐)
直接取第一个和第三个姓名拼接即可:
string name = "Hunter Georgie Martin"; string[] nameParts = name.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries); string noMiddleName = $"{nameParts[0]} {nameParts[2]}"; // 如果后续姓名数量可能变化,也可以用通用写法: // string noMiddleName = string.Join(" ", nameParts.Take(1).Concat(nameParts.Skip(2))); Console.WriteLine(noMiddleName); // 输出:Hunter Martin
字符串索引实现法
通过定位两个空格的位置,截取前后部分拼接:
string name = "Hunter Georgie Martin"; int firstSpacePos = name.IndexOf(' '); int secondSpacePos = name.IndexOf(' ', firstSpacePos + 1); string noMiddleName = name.Substring(0, firstSpacePos) + " " + name.Substring(secondSpacePos + 1); Console.WriteLine(noMiddleName); // 输出:Hunter Martin
任务3:移除第三个姓名
数组实现法
取前两个姓名拼接:
string name = "Hunter Georgie Martin"; string[] nameParts = name.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries); string noLastName = string.Join(" ", nameParts.Take(2)); Console.WriteLine(noLastName); // 输出:Hunter Georgie
字符串索引实现法
定位最后一个空格的位置,截取前面的内容:
string name = "Hunter Georgie Martin"; int lastSpacePos = name.LastIndexOf(' '); string noLastName = name.Substring(0, lastSpacePos); Console.WriteLine(noLastName); // 输出:Hunter Georgie
内容的提问来源于stack exchange,提问作者user15004061
相关产品推荐
相关产品推荐

