正则表达式删除第一个单词并使用 c# 将第二个单词的第一个字符大写

Posted

技术标签:

【中文标题】正则表达式删除第一个单词并使用 c# 将第二个单词的第一个字符大写【英文标题】:Regex to remove first word and capitalize the first char of the second with c# 【发布时间】:2021-11-27 16:47:35 【问题描述】:

我需要从短语中删除第一个特定单词(例如 Write)并返回剩余的单词,第一个大写。

把你的信写在沙子里=>你的信在沙子里

我用这个代码

var test = Regex.Replace("Write your letter in the sand", "(^Write )(.)", "$2");

我明白了

test == "your letter in the sand"

但我不知道如何将第二个捕获的组大写

【问题讨论】:

【参考方案1】:

你可以使用

var text = "Write your letter in the sand";
var test = Regex.Replace(text, @"^\w+\W+(\w)", x => x.Groups[1].Value.ToUpper());

请参阅C# demo。

这里,^\w+\W+(\w) 匹配

^ - 字符串开头 \w+ - 一个或多个单词字符 \W+ - 一个或多个非单词字符 (\w) - 第 1 组:一个单词字符。

x => x.Groups[1].Value.ToUpper() lambda 表达式将 Group 1 值(第二个单词的第一个字符)转换为大写后将其放回到结果字符串中以代替匹配的文本。

【讨论】:

以上是关于正则表达式删除第一个单词并使用 c# 将第二个单词的第一个字符大写的主要内容,如果未能解决你的问题,请参考以下文章

Linux基础-sed+正则表达式

捕获可选连字符正则表达式之间的单词

如何使用正则表达式(或 C# 函数)在一个变量中剪切 TEXT MESSAGE 并从此文本中剪切第二个变量 USERNAME?

正则表达式 - 使用否定环视匹配同句中的单词

GNU R:如何在字符串的每个单词的开头和结尾删除重复的字符?

Sed:以/etc/passwd文件为模板