在LINQPad中实现文本特殊大写规则:短单词全大写,其余首字母大写
解决方案:文本单词大小写规范化处理
直接上适配LINQPad的完整实现代码,完全满足你对文本文件的大小写转换需求:
// 读取原文件内容 var textFile = File.ReadAllText(@"C:\...\...\...\...\uppercase.txt"); // 按行处理,保留原文本的换行结构 var processedLines = textFile.Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries) .Select(line => string.Join(" ", line.Split(' ', StringSplitOptions.RemoveEmptyEntries) .Select(word => word.Length <= 3 ? word.ToUpperInvariant() : char.ToUpperInvariant(word[0]) + word.Substring(1).ToLowerInvariant()))); var processedText = string.Join(Environment.NewLine, processedLines); // LINQPad中直接输出处理结果 processedText.Dump(); // 可选:将处理后的内容写入新文件(或覆盖原文件) // File.WriteAllText(@"C:\...\...\...\...\processed_uppercase.txt", processedText);
代码细节说明
- 保留换行结构:先按换行符拆分文本为独立行,处理每行后再拼接回多行文本,完全匹配你的示例输入输出格式
- 单词处理规则:
- 长度≤3的单词:直接转为全大写(用
ToUpperInvariant避免不同区域文化的大小写转换差异) - 长度>3的单词:首字母转大写,剩余字母统一转为小写,保证格式一致性
- 长度≤3的单词:直接转为全大写(用
- 清理空白内容:拆分时使用
StringSplitOptions.RemoveEmptyEntries,自动过滤连续空格或换行产生的空字符串,输出更整洁
关键注意点
优先使用ToUpperInvariant和ToLowerInvariant而非普通的ToUpper/ToLower,避免因系统区域文化设置(比如土耳其语的字母转换规则)导致的异常转换结果。
内容的提问来源于stack exchange,提问作者masha
相关产品推荐
相关产品推荐

