CSV写入字符串拆分问题:多词描述无法完整存入指定列
问题分析与解决
输入字符串格式:
K, Faint Brown N, Very Light Brown
需要生成的CSV格式:
| Col1 | Col2 | Col3 |
|---|---|---|
| K | Faint | Brown |
| N | Very Light | Brown |
当前代码的问题:
你用逗号分割后,colorvalues[1]是逗号后的整段内容(比如第二行是 Very Light Brown),但后续没有正确提取中间描述;直接用Split().Last()能拿到Col3,但中间描述需要从逗号后的内容里剔除最后一个词来获取。
修正后的代码
// 获取原始字符串并去除首尾空白 string originalStr = prop.GetValue(item).ToString().Trim(); // 按逗号分割为两部分,确保逗号后的所有内容都保留 string[] commaSplit = originalStr.Split(new[] { ',' }, 2); string col1 = commaSplit[0].Trim(); string restContent = commaSplit[1].Trim(); // 将剩余内容按空格分割,提取最后一个词作为Col3 string[] spaceSplit = restContent.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); string col3 = spaceSplit.Last(); // 拼接除最后一个词外的所有内容作为Col2 string col2 = string.Join(" ", spaceSplit.Take(spaceSplit.Length - 1)); // 写入CSV行(若内容含逗号/引号,需额外做转义处理,此处假设无特殊字符) sw.WriteLine($"{col1},{col2},{col3}");
代码说明
Split(new[] { ',' }, 2)仅分割成两部分,避免后续出现逗号时破坏内容结构。- 全程用
Trim()清理多余空格,避免输出时出现无效空白字符。 - 通过
Take(spaceSplit.Length - 1)截取中间描述部分,再用string.Join拼接成完整文本,解决多词描述的提取问题。 - 用
WriteLine一次性写入整行,替代多次Write操作,减少手动拼接的出错概率。
内容的提问来源于stack exchange,提问作者Naw
相关产品推荐
相关产品推荐

