首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

C# 實作 PHP preg_replace 多模式替換功能

     編輯:PHP 綜合知識

前言

PHP 的 preg_replace() 函數功能強大,支援陣列作為模式與替換值,可一次完成多組字串替換。本文示範如何在 C# 中以擴充方法實作相同行為,方便 .NET 開發者移植 PHP 邏輯。

PHP preg_replace 速覽

函數原型:mixed preg_replace (mixed $pattern, mixed $replacement, mixed $subject [, int $limit])

  • 前三個參數皆可接受陣列
  • $limit 可限制替換次數,預設全部替換

PHP 陣列替換範例

<?php
$string = "Name: {Name}<br>\nEmail: {Email}<br>\nAddress: {Address}<br>\n";
$patterns = array("/{Address}/", "/{Name}/", "/{Email}/");
$replacements = array(
    "No.5, Wilson St., New York, U.S.A",
    "Thomas Ching",
    "tom@emailaddress.com"
);
print preg_replace($patterns, $replacements, $string);
?>

輸出結果:

Name: Thomas Ching
Email: tom@emailaddress.com
Address: No.5, Wilson St., New York, U.S.A

C# 擴充方法實作

using System;
using System.Text.RegularExpressions;

public static class StringExtensions
{
    /// 
    /// 模擬 PHP preg_replace 多模式替換
    /// 
    public static string PregReplace(this string input, string[] patterns, string[] replacements)
    {
        if (patterns.Length != replacements.Length)
            throw new ArgumentException("模式陣列與替換陣列長度必須一致");

        for (int i = 0; i < patterns.Length; i++)
        {
            input = Regex.Replace(input, patterns[i], replacements[i]);
        }
        return input;
    }
}

使用範例

string template = "Name: {Name}\nEmail: {Email}\nAddress: {Address}\n";
string[] patterns = { @"\{Address\}", @"\{Name\}", @"\{Email\}" };
string[] replacements = { "No.5, Wilson St., New York, U.S.A", "Thomas Ching", "tom@emailaddress.com" };

string result = template.PregReplace(patterns, replacements);
Console.WriteLine(result);

注意事項

  • C# 規則運算式預設區分大小寫,若需忽略大小寫可加 RegexOptions.IgnoreCase
  • 特殊字元需雙重跳脫(如 \{)
  • 大量替換時可考慮 StringBuilder 提升效能
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved