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

如何忽略参数值/定义比较两个URI/URL端点

忽略URI参数部分的字符串匹配实现

要让两个仅参数占位符/实际值不同的URI判定为相等,核心思路是统一处理掉URI中的参数变量部分,再进行比较。以下是两种实用的实现方式:

方法一:正则替换参数后比较

通过正则表达式匹配URI中的参数占位符(如{projectName})和对应位置的实际参数值(如XXX),将它们替换为统一标记后再做字符串相等校验。

using System.Text.RegularExpressions;

public bool MatchUris(string uriA, string uriB)
{
    // 正则规则:匹配 {参数名} 格式的占位符,或/statuses前的参数值段
    var paramRegex = new Regex(@"{[^}]+}|(?<=/)[^/]+(?=/statuses$)");
    
    // 替换两个URI的参数部分为统一字符串
    var processedA = paramRegex.Replace(uriA, "PLACEHOLDER");
    var processedB = paramRegex.Replace(uriB, "PLACEHOLDER");
    
    return string.Equals(processedA, processedB);
}

// 调用示例
var uri1 = "/rest/api/projects/{projectName}/statuses";
var uri2 = "/rest/api/projects/XXX/statuses";
bool isMatch = MatchUris(uri1, uri2); // 返回true

方法二:按路径段逐个校验

将URI按斜杠拆分为路径段,逐个比对:如果对应位置的段一个是参数占位符、另一个是实际值,则跳过校验;其余段必须完全一致。这种方法适配参数在任意位置的场景。

public bool MatchUrisBySegments(string uriA, string uriB)
{
    // 拆分URI为非空路径段
    var segmentsA = uriA.Split('/').Where(s => !string.IsNullOrWhiteSpace(s)).ToArray();
    var segmentsB = uriB.Split('/').Where(s => !string.IsNullOrWhiteSpace(s)).ToArray();
    
    // 路径段数量不一致直接返回不匹配
    if (segmentsA.Length != segmentsB.Length)
        return false;
    
    for (int i = 0; i < segmentsA.Length; i++)
    {
        var segA = segmentsA[i];
        var segB = segmentsB[i];
        
        // 判断当前段是否为参数占位符
        bool isParamSeg = (segA.StartsWith("{") && segA.EndsWith("}")) 
                          || (segB.StartsWith("{") && segB.EndsWith("}"));
        
        // 非参数段必须完全相等
        if (!isParamSeg && !segA.Equals(segB, StringComparison.Ordinal))
            return false;
    }
    
    return true;
}

// 调用示例
var uri1 = "/rest/api/projects/{projectName}/statuses";
var uri2 = "/rest/api/projects/XXX/statuses";
bool isMatch = MatchUrisBySegments(uri1, uri2); // 返回true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:10:11