C#如何给URL字符串数组中的每一个元素追加指定后缀文本
问题原因
你调用Append方法失败的核心原因是C#的string类型本身没有提供Append实例方法,该方法属于StringBuilder类,普通字符串追加直接使用+运算符即可实现。
实现方案
方案1:单次遍历完成替换+追加(性能最优)
直接在原有循环中同时完成内容替换和后缀拼接,无需额外遍历数组:
var jsonString = response.Content; var jsonDeserialized = JsonConvert.DeserializeObject<Root>(jsonString); var projects = jsonDeserialized.value.Select(value => value.url).ToArray(); // 提前定义固定后缀,方便后续统一修改 const string suffix = "/_apis/release/releases?minCreatedTime=2021-08-31&api-version=5.0"; for (int i = 0; i < projects.Length; i++) { projects[i] = projects[i].Replace("_apis/projects/", string.Empty) + suffix; } foreach (var url in projects) { Console.WriteLine(url); } Console.ReadLine();
方案2:LINQ链式写法(代码最简洁)
直接在取值阶段完成所有处理,无需单独写循环:
const string suffix = "/_apis/release/releases?minCreatedTime=2021-08-31&api-version=5.0"; var jsonString = response.Content; var jsonDeserialized = JsonConvert.DeserializeObject<Root>(jsonString); var projects = jsonDeserialized.value .Select(v => v.url.Replace("_apis/projects/", string.Empty) + suffix) .ToArray(); foreach (var url in projects) { Console.WriteLine(url); } Console.ReadLine();
额外优化(可选)
如果担心拼接出现双斜杠问题,可以增加斜杠校验逻辑:
var processedUrl = projects[i].Replace("_apis/projects/", string.Empty); projects[i] = processedUrl.EndsWith('/') ? $"{processedUrl}{suffix.TrimStart('/')}" : $"{processedUrl}{suffix}";
内容的提问来源于stack exchange,提问作者Sherpa11
相关产品推荐
相关产品推荐

