c# - 如何在 C# 中使用正则表达式大写第一个字母(忽略非 az)?
问题描述
有很多关于如何使用 C# 将第一个字母大写的帖子,但是当我忽略其中的前缀非字母字符和标签时,我特别在努力如何做到这一点。例如,
<style=blah>capitalize the word, 'capitalize'</style>
如何忽略潜在的<> 标签(或之前的非字母字符,如星号*
)及其中的内容,然后将“大写”大写?
我试过:
public static string CapitalizeFirstCharToUpperRegex(string str)
{
// Check for empty string.
if (string.IsNullOrEmpty(str))
return string.Empty;
// Return char and concat substring.
// Start @ first char, no matter what (avoid <tags>, etc)
string pattern = @"(^.*?)([a-z])(.+)";
// Extract middle, then upper 1st char
string middleUpperFirst = Regex.Replace(str, pattern, "$2");
middleUpperFirst = CapitalizeFirstCharToUpper(str); // Works
// Inject the middle back in
string final = $"$1{middleUpperFirst}$3";
return Regex.Replace(str, pattern, final);
}
编辑:
输入:<style=foo>first non-tagged word 1st char upper</style>
预期输出:<style=foo>First non-tagged word 1st char upper</style>
解决方案
使用后向正则表达式功能,您可以匹配第一个不带 > 括号的“大写”,然后您可以将输出大写。
正则表达式如下:
(?<=<.*>)\w+
它将匹配 > 括号后的第一个单词
推荐阅读
- django - 使用 storages.backends.s3boto.S3BotoStorage 将标签添加到 s3 对象
- visual-studio - 错误:此模板试图加载组件程序集 'Microsoft.VisualStudio.Universal.TemplateWizards, Version=15.0.0.0
- python - (Django) DetailView 模板不显示信息
- entity-framework - 如何在 EF TPH Code First 中阻止创建冗余 FK 约束
- google-cloud-platform - 从本地机器访问 GCP Memorystore
- javascript - 使用 Immutable.js 从 memoized 选择器返回纯 JS 对象
- php - 为什么我的每个页面的特色图片没有显示在我的菜单中
- node.js - 如何使用 MacOS 在 package.json 上调用多个命令
- c++ - 向现有项目添加更多平台
- google-analytics - 将 Google Analytics 的 URL 跟踪参数添加到内部网站搜索查询时出错