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

C#实现日志中电话号码(XXX-XXX-XXXX)格式掩码的问题

基于正则表达式的电话号码掩码解决方案

核心改进思路

放弃基于索引的文本截取和匹配,改用正则表达式来:

  1. 精准提取指定日期段的日志内容
  2. 批量匹配所有电话号码并替换为要求的掩码格式

完整代码实现

if (filedata.Contains("Started: " + value))
{
    // 用正则提取从"Started: 日期"到"Ended: 日期"的日志内容,避免索引依赖
    string logPattern = $"Started: {value}.*?Ended: {value}";
    Match logMatch = Regex.Match(filedata, logPattern, RegexOptions.Singleline);
    
    if (logMatch.Success)
    {
        string rawLog = logMatch.Value;
        
        // 1. 掩码括号内的XXX-XXX-XXXX格式号码(替换为(XXX-XXX-XXXX))
        string maskedLog = Regex.Replace(rawLog, @"\((\d{3})-(\d{3})-(\d{4})\)", @"(XXX-XXX-XXXX)");
        
        // 2. 掩码前面的7位短号(替换为XXX-XXXX,可根据需求调整格式)
        maskedLog = Regex.Replace(maskedLog, @"home number (\d{7})", @"home number XXX-XXXX");
        
        // 将处理后的日志写入RichTextBox
        richTextBox2.Text = maskedLog;
    }
}

代码说明

  • 日志提取:使用RegexOptions.Singleline让正则表达式的.匹配换行符,精准捕获从指定日期的Started到Ended之间的所有内容,彻底摆脱日志长度变化带来的索引失效问题。
  • 长号码掩码:正则\((\d{3})-(\d{3})-(\d{4})\)匹配括号内的标准10位分三段号码,替换为要求的(XXX-XXX-XXXX)格式。若需保留部分可见数字(如前三位),可将替换字符串改为($1-XXX-XXXX)。
  • 短号码掩码:正则home number (\d{7})匹配日志中的7位短号,替换为XXX-XXXX格式,可根据需求调整掩码规则。

自定义调整建议

  • 如果需要掩码其他格式的电话号码,只需修改对应的正则表达式:
    • 匹配不带括号的10位号码:\b\d{3}-\d{3}-\d{4}\b
    • 匹配纯10位数字:\b\d{10}\b
  • 若要调整掩码显示规则,直接修改替换字符串即可(比如保留最后四位:(XXX-XXX-$3))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:10:33