【问题标题】:Interpolation in the middle of a string字符串中间的插值
【发布时间】:2019-02-13 15:08:40
【问题描述】:

我想在字符串中间插值,但我不能使用String.Format,因为字符串包含{}大括号。

这是我迄今为止尝试过的:

string code = "(function(){var myvariable = $"{variableToBeInterpolated}"});"

返回:) 预期;预计

编辑:我尝试了下面的sn-p,插值现在可以工作了,但是代码并没有在浏览器中执行。

"(function(){var myvariable=" + $"{myvariable c#}" + ")});"

【问题讨论】:

  • 为什么包含{}的字符串意味着你不能使用string.Format?只需escape those characters
  • 您可以使用String.Format - 只需将括号加倍
  • 当我使用这样的字符串格式时: string.Format ((function () {var myvariable = {0}}), myvariable);返回:包含无效的占位符
  • 你为什么要首先通过字符串来构建 JavaScript?这里有什么用处?
  • 我使用cefsharp,方法evaluatescript来执行JavaScript

标签: c# string-interpolation


【解决方案1】:

一般信息

在 C# 版本 6 中,语言中添加了广泛的 string interpolation capabilities

字符串插值提供了一种更易读、更方便的语法 创建格式化字符串而不是 string composite formatting 功能。

要解决您的问题,请查看文档的special characters 部分,内容如下:

在由 插值字符串,使用两个大括号,“{{”或“}}”。


示例

var variable = 10;
var code = $"(function() {{ var myVariable = {variable} }});";
Console.WriteLine(code);

输出:(function() { var myVariable = 10 });

【讨论】:

  • 如果我的字符串包含更多的括号,这个方法有效吗?
  • @Slinidy 当然,你只需要逃脱他们。
【解决方案2】:

你试过了吗:

string someVariable = "test";

string code = $"(function()'{{var myvariable = ({someVariable} in c#)}});"

在 C# 中使用 $ 是字符串插值。在 C# 6 中添加

docs.microsoft.com

【讨论】:

  • 你试过编译这个吗?
  • @KennethK.对不起,我的错。你必须做双 {{ }} 否则它是一个编译错误。检查我更新的答案。我不能保证它会在运行时工作,您需要尝试一下。
【解决方案3】:

为什么要在中间插值,而不是把$放在前面。对于{,您需要使用{{。 (同样适用于}

string code = $"(function(){{ var myvariable = {myvariable} }});";

【讨论】:

  • 符号 $ 必须在中间,如果它不会因为括号而导致字符串错误
  • 这篇 SO 帖子解释了使用 string.format 转义花括号。 (使用 $ 字符串插值)stackoverflow.com/questions/3773857/…
  • @nickgowdy tnx 获取链接。我回滚了我的第一个答案,这实际上是正确的,但关键是我对实际的要求感到困惑,因为@Slinidy 说他想要$ 在中间......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-23
  • 2012-12-08
  • 2013-03-24
  • 2011-11-15
  • 2020-05-24
相关资源
最近更新 更多