字符串字符替换是否有快捷方式?替代多次Replace实现格式转换
替代多次Replace处理JSON格式字符串的快捷方法
现有输入字符串:
string x = "[\r\n \"TEST\",\r\n \"GREAT\"\r\n]";期望输出:
TEST,GREAT当前通过多次调用
Replace方法处理,希望找到更简洁的替代方案,结果可为字符串或List<string>。
方法1:JSON反序列化(推荐)
你的输入本质是标准JSON数组,用.NET自带的JSON库或第三方库反序列化是最可靠的方案,能兼容复杂场景(比如元素含特殊字符),无需手动处理格式符号。
用.NET原生System.Text.Json(.NET Core 3.0+/.NET 5+)
using System.Text.Json; string x = "[\r\n \"TEST\",\r\n \"GREAT\"\r\n]"; // 反序列化为字符串列表 List<string> strList = JsonSerializer.Deserialize<List<string>>(x); // 拼接成目标字符串 string result = string.Join(",", strList);
用Newtonsoft.Json(Json.NET)
如果项目中已引用Json.NET,也可以用这个:
using Newtonsoft.Json; string x = "[\r\n \"TEST\",\r\n \"GREAT\"\r\n]"; List<string> strList = JsonConvert.DeserializeObject<List<string>>(x); string result = string.Join(",", strList);
方法2:正则表达式提取
如果能确定输入格式简单(元素不含转义引号、逗号等特殊字符),可以用正则直接提取双引号内的内容:
using System.Text.RegularExpressions; using System.Linq; string x = "[\r\n \"TEST\",\r\n \"GREAT\"\r\n]"; // 匹配所有被双引号包裹的内容 var matches = Regex.Matches(x, @"\""([^\""]+)\"""); List<string> strList = matches.Cast<Match>().Select(m => m.Groups[1].Value).ToList(); string result = string.Join(",", strList);
注意:如果元素包含转义引号(如
"HE\"LLO"),正则会失效,优先用JSON反序列化方案。
内容的提问来源于stack exchange,提问作者Kerv
相关产品推荐
相关产品推荐

