c# - ToTitleCase() 方法不适用于特殊字符
问题描述
我有一个需要转换的字符串,以便将第一个字符转换为大写。使用 ToTitleCase 方法它可以正常工作,除了有特殊字符的情况。
以下是代码和预期结果
String textToConvert= "TEST^S CHECK"
TextInfo myTI = new CultureInfo("en-US",false).TextInfo;
return myTI.ToTitleCase(textToConvert.ToLower())
预期结果:Test^s Check 但结果是 Test^S Check,特殊字符后“S”转换为大写 ^
无论如何要将转换更改为预期结果
解决方案
ToTitleCase
是一种方便的方法,但如果您需要更细粒度的控制,Regex 可能是更好的选择:
string titleCase = Regex.Replace(textToConvert.ToLower(), @"^[a-z]|(?<= )[a-z]",
match => match.Value.ToUpper());
^[a-z]|(?<=\s)[a-z]
将匹配字符串开头的字母,以及前面有空格(空格、制表符或换行符)的字母。
推荐阅读
- cron - mysqldump 备份文件显示无法打开输入文件:Mysqldump
- python - python构造函数中的参数不匹配
- google-oauth - 如何创建 Google API 作为代理?
- php - 在 WooCommerce 中恢复已删除的首页
- c++ - 使用信号检测子进程何时终止的最佳方法是什么
- c# - 没有奖励网格的 Q-Learning
- javascript - 选项选择中的 Codeigniter Datepicker
- odata - 如何在 SAP UI5 中以不同的更改集 ID 在单个批次中发送多个 POST 请求?
- javascript - jQuery 显示/隐藏不起作用
- javascript - react-native 中的图像前进和后退