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

从斜杠分隔字符串提取函数名并替换为函数返回值的实现

替换斜杠分隔字符串中的函数调用为返回值

需求说明

给定斜杠分隔的字符串,其中包含形如getCustomer()的函数调用(部分带前缀如customer=getCustomer()),需将这些函数调用替换为对应函数的返回值,最终得到目标字符串。

已定义的工具函数:

function getCustomer() { 
 return "Customer1"; 
} 

function getControllerName() { 
 return "myController"; 
} 

function getCsvFileName() { 
 return "userData.csv"; 
} 

解决方案代码

// 构建函数映射表,安全管理可调用函数
const functionMap = {
  getCustomer,
  getControllerName,
  getCsvFileName
};

// 原始输入字符串
const originalStr = "my_doc/desktop/customer=getCustomer()/getCsvFileName()/controller=getControllerName()";

// 处理字符串并替换函数调用
const finalStr = originalStr.split("/")
  .map(part => {
    if (part.endsWith("()")) {
      // 提取函数调用片段
      const funcCall = part.split("=")[1] ?? part;
      // 提取纯函数名(移除末尾的"()")
      const funcName = funcCall.slice(0, -2);
      
      if (functionMap[funcName]) {
        const funcResult = functionMap[funcName]();
        // 根据是否有前缀,替换对应部分
        return part.includes("=") 
          ? part.replace(funcCall, funcResult) 
          : funcResult;
      }
    }
    // 非函数调用部分直接保留
    return part;
  })
  .join("/");

console.log(finalStr);
// 输出结果:my_doc/desktop/customer=Customer1/userData.csv/controller=myController

思路解析

  1. 安全函数调用:用functionMap集中管理可调用函数,避免直接使用全局变量或eval带来的安全风险。
  2. 逐段处理:将原始字符串按斜杠分割后,逐个检查每个片段是否为函数调用(以()结尾)。
  3. 函数提取与替换:
    • 从片段中提取函数调用部分(区分带前缀和不带前缀的情况)。
    • 移除()得到纯函数名,通过映射表调用对应函数获取返回值。
    • 根据原片段是否包含前缀(=),替换对应的函数调用部分,或直接替换为返回值。
  4. 拼接结果:将处理后的所有片段用斜杠拼接,得到最终目标字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:30:52