You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于性别动态替换his/her的正则匹配需求及代码修正

C#实现按规则替换文本中的his/her(区分大小写)

需求说明

替换文本中的###HIS_HER###标记,遵循以下规则:

  • 标记处于行首或语句结束符号(如句号)之后时,替换为首字母大写的His/Her
  • 标记处于行内中间位置时,替换为小写的his/her

示例输入:

###HIS_HER### Ability is good. Test ###HIS_HER### Ability is good.###HIS_HER### Test Done.

预期输出:

His Ability is good. Test his Ability is good.His Test Done.

现有问题代码

当前使用的C#代码无法满足需求:

var text = "###HIS_HER### Ability is good. Test ###HIS_HER### Ability is good.###HIS_HER### Test Done.";
var replace = "his";

var Replace = new System.Text.RegularExpressions.Regex(@"[A-Z][a-z]\s*"+search);
text = Replace.Replace(text,replace);
return text;

正确实现方案

通过正则表达式区分两种场景,结合替换委托实现精准替换:

using System.Text.RegularExpressions;

var inputText = "###HIS_HER### Ability is good. Test ###HIS_HER### Ability is good.###HIS_HER### Test Done.";
var targetWord = "his"; // 可替换为"her"适配女性性别
var targetWordUpper = char.ToUpper(targetWord[0]) + targetWord.Substring(1);

// 正则匹配两类目标:行首/句号后的标记,以及普通行内标记
var pattern = new Regex(@"(^|\.)\s*###HIS_HER###|###HIS_HER###");

var resultText = pattern.Replace(inputText, match =>
{
    // 匹配到行首或句号后的情况,返回大写形式
    if (match.Groups[1].Success)
    {
        return match.Groups[1].Value + (match.Groups[1].Value == "" ? "" : " ") + targetWordUpper;
    }
    // 普通行内情况,返回小写形式
    return targetWord;
});

Console.WriteLine(resultText);

代码说明

  • 正则表达式(^|\.)\s*###HIS_HER###捕获行首或句号后的标记,保留前面的句号;\s*处理标记与前面符号间的空格
  • 单独的###HIS_HER###匹配行内中间的标记
  • 替换委托通过判断捕获组是否存在,决定返回大写或小写形式,确保格式符合规则

运行代码后,示例输入将输出预期结果:

His Ability is good. Test his Ability is good. His Test Done.

内容的提问来源于stack exchange,提问作者Tanay Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 19:42:26