高效的模板群体

2024-01-04

假设我有一个文本模板,其中包含许多需要填充的字段:

var template = "hello {$name}. you are {$age} years old. you live in {$location}"

and an IDictionary<string,string>要替换的值:

key     | value
===================
name    | spender
age     | 38
location| UK

填充模板的简单方法可能是这样的:

var output = template;
foreach(var kvp in templValues)
{
    output = output.Replace(string.format("{{${0}}}", kvp.Key), kvp.Value);
}

然而,这似乎效率低下。有没有更好的办法?


您的方法没有任何问题,这取决于所使用的上下文。例如,在紧密的关键任务循环中,这不是最有效的方法,但对于偶尔使用,或者在 GUI 中,这可能是可以的。

更有效的解决方案是解析字符串。例如。搜索第一个{然后是下一个}。它们之间的文本是查找的关键,然后您可以替换它。然后,您从 后面的字符开始搜索}。这种方法的优点是,如果您插入的值具有嵌入的标记,则该值不会被替换。缺点是解析时处理边缘情况比较困难。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高效的模板群体 的相关文章

  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • Func 方法参数的首选命名约定是什么?

    我承认这个问题是主观的 但我对社区的观点感兴趣 我有一个缓存类 它采用类型的缓存加载器函数Func
  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • 为什么 POSIX 允许在只读模式下超出现有文件结尾 (fseek) 进行搜索

    为什么寻找文件结尾很有用 为什么 POSIX 让我们像示例中那样在以只读方式打开的文件中进行查找 c http en cppreference com w c io fseek http en cppreference com w c io
  • 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

    使用以下设置 基于 Cortex M3 的 C gcc arm 交叉工具链 https launchpad net gcc arm embedded 使用 C 和 C FreeRtos 7 5 3 日食月神 Segger Jlink 与 J
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • 从java中的字符串数组中删除空值

    java中如何从字符串数组中删除空值 String firstArray test1 test2 test4 我需要像这样没有 null 空 值的 firstArray String firstArray test1 test2 test4
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器

随机推荐

  • 在 MySQL 中存储 0.00001

    我有一个赚取网站 我希望用户每次点击赚取 0 00001 我知道它低于 1p 我可以使用什么类型的色谱柱 我努力了int and float但两者都不起作用 Use DECIMAL http dev mysql com doc refman
  • 将勾号 (✔) 添加到 string.xml

    我在字符串消息上添加勾号 strings xml 但是当我在移动设备上显示它时 我得到一个 框 而不是刻度线 我已直接将符号粘贴到我的字符串消息上 我们有什么办法可以处理吗 我们需要使用 unicode 值吗 添加unicode符号 u27
  • 如何使用 Perl 进行批量搜索和替换?

    我有以下脚本 它接受输入文件 输出文件和 将输入文件中的字符串替换为其他字符串并写出 输出文件 我想更改脚本以遍历文件目录 即 脚本不应提示输入和输出文件 而应采用 作为参数的目录路径 例如 C temp allFilesTobeRepla
  • Angular 8 通用服务器端渲染

    我正在关注这个教程https blog angular university io angular universal https blog angular university io angular universal 但我无法执行第一个
  • 微服务:工作者角色、API 或两者兼而有之?

    我见过微服务的混合示例 它们实现为工作角色处理队列中的请求和 或 API REST 支持异步场景 可以利用队列 通过简单的哑队列侦听器将请求转发到微服务 REST API 而同步场景将直接调用 REST API 我认为微服务这个术语的定义很
  • Vuejs 子组件中的 Prop 值无法绑定到元素属性

    我正在使用 Vuetify 在 Vuejs 中开发一个管理应用程序 并且表单中有三个字段供用户选择十六进制颜色值 为了让用户更容易 我实现了一个基于的颜色选择器这个代码笔 https codepen io Brownsugar pen Na
  • JQuery 通过 IFrame 进行可拖动和可调整大小(解决方案)

    我最近在使用 JQuery Draggable 和 Resizing 插件时遇到了一些麻烦 在寻找解决方案时 我在许多不同的地方发现了一些非常零碎的代码 最后归档到一个干净的解决方案 该解决方案似乎对我来说几乎完美 我想我会与其他人分享我的
  • 将特定位置的位收集为新值

    我有一个大小为 N 个字符的位掩码 它是静态已知的 即可以在编译时计算 但它不是单个常量 所以我不能只是写下来 位设置为 1 表示 想要 的位 我有一个相同大小的值 该值只有在运行时才知道 我想按顺序从该值收集 想要的 位到新值的开头 为了
  • 在 Sublime Text 2 中重新格式化段落的常用方法是什么?

    当您有一个包含长行的文本文件时 如何将它们重新格式化为一定的宽度 同时 不把它们混在一起吗 一般来说 我在 Vim 中寻找的是这个 每行都要完成 V gq j with textwidth提前设定 ALT CMD q在 OS X 上 将硬换
  • 是否可以使用Javamail发送邮件而无需身份验证?

    我一直在复制这段代码http www tutorialspoint com java java sending email htm http www tutorialspoint com java java sending email ht
  • 您是否可以使用 PtrToStringAuto 在 macOS 上的 Powershell 7 中解密安全字符串?

    我没有成功地让以下代码片段输出 Hello World 在PS7中 string Hello World ConvertTo SecureString AsPlainText Force System Runtime InteropServ
  • PHP imagecreatefromjpeg 同时保持方向

    我一直在开发我的图像上传网站 我正在尝试从我的 iPhone 拍照并将它们上传到我的网络服务器 我的文件上传正常 但是我遇到的问题是我的所有图像都向左旋转 90 度 我的图片上传过程 imageObject imagecreatefromj
  • 汇编指令是否将 1-1 映射到机器语言?

    我正在同时阅读各种有关计算机体系结构的书籍 但我很困惑 有的书上说汇编指令只是机器指令的助记符 每条指令恰好对应一条机器指令 然而 塔南鲍姆的结构化计算机组织将组件放在层上above操作系统 似乎暗示汇编以某种方式使用操作系统 我还没有阅读
  • Gulp ngmin + uglify 无法正常工作

    我有以下任务 gulp task scripts function return gulp src app js app js app config config js app js controllers js app js direct
  • 如何在不同大小的位图上应用矩阵

    我有2个图像视图 第一个图像视图有600像素大小的位图 第二个图像视图有1024像素位图 我正在使用矩阵缩放旋转和移动第一个图像视图 一旦用户点击按钮 第二个图像视图应该具有相同的大小缩放和旋转 但因为第二个图像视图有更大的位图 我不能只使
  • 如何在Oracle中仅根据日期部分比较两个DATE值?

    我正在尝试使用以下查询获取过去 30 天的计数 SELECT date occured COUNT FROM problem WHERE date occured gt CURRENT DATE 30 GROUP BY date occur
  • 为什么 Apollo 需要 graphql-tag

    按照一些教程和示例 我将 GraphQL API 集成到了一个简单的 Vue 应用程序中 我使用 Apollo 与 API 进行交互 并使用 graphql tag 提供的模板文字来编写查询 如下所示 gql query getUser u
  • ES6条件if语句检查数组是否为空[重复]

    这个问题在这里已经有答案了 我似乎无法让我的 jsx es6 React if 语句起作用 我做错了什么 const otherVariables doesntMatter return div if props student lengt
  • 从knitr中的同一块/语句生成两个图

    是否可以让绘图生成代码从同一图形输出不同大小的两个版本 Rmd文档 要么通过块选项 我没有看到任何直接在这里工作的东西 要么通过自定义knitr钩 最好用以下方法来完成png device 我的动机 我希望能够输出一个尺寸的图形 该图形适合
  • 高效的模板群体

    假设我有一个文本模板 其中包含许多需要填充的字段 var template hello name you are age years old you live in location and an IDictionary