C# Lambda实现逗号分隔大写带空格字符串转标题格式并修剪空格
问题解决:将全大写逗号分隔字符串转换为Title Case格式
错误原因分析
你代码中y.Join的写法错误,因为Join是string类的静态方法,必须通过string类型名称来调用,不能通过字符串实例调用,这就是报错“请使用类型名称限定它”的原因。此外,你的代码最后缺少将处理后的所有元素合并为最终逗号分隔字符串的步骤。
修正后的代码方案
方案1:手动处理单词大小写
string s_Response = string.Join(",", responseString.Split(',') .Select(x => x.Trim()) .Select(part => string.Join(" ", part.Split(' ') .Select(word => char.ToUpper(word[0]) + word.Substring(1).ToLower()) )) );
方案2:使用TextInfo.ToTitleCase简化处理(推荐)
利用.NET内置的TextInfo.ToTitleCase方法可以更简洁地实现Title Case转换,同时处理细节更规范:
using System.Globalization; // ... string s_Response = string.Join(",", responseString.Split(',') .Select(x => x.Trim()) .Select(part => CultureInfo.InvariantCulture.TextInfo.ToTitleCase(part.ToLower())) );
代码说明
- 拆分与修剪:
Split(',')按逗号拆分原字符串,x.Trim()去除每个拆分元素的前后空格(符合示例中去掉逗号后空格的需求)。 - Title Case转换:
- 方案1:将每个元素拆分为单词,手动将首字母大写、其余字母小写后重新拼接。
- 方案2:先将整个元素转为小写,再用
ToTitleCase自动将每个单词首字母大写,代码更简洁。
- 合并结果:最后用
string.Join(",", ...)将所有处理后的元素用逗号连接,得到最终格式的字符串。
测试验证
用你提供的示例字符串:
输入:"BAHAMAS, BAHRAIN, BANGLADESH, BONAIRE SINT EUSTATIUS, BOSNIA HERZEGOVINA"
两种方案都会输出:"Bahamas,Bahrain,Bangladesh,Bonaire Sint Eustatius,Bosnia Herzegovina",与期望结果一致。
内容的提问来源于stack exchange,提问作者Mufaddal
相关产品推荐
相关产品推荐

