标签: string-interpolation

为什么字符串插值在erb模板中失败?

我在.erb文件中有以下代码:

<% embed='<a href="http://someurl.com/whatever">#{@webcast.name}</a>'%>

<p id="embedCode">
    <pre>
        <code>
            <%= embed %>
        </code>
    </pre>
</p>
Run Code Online (Sandbox Code Playgroud)

锚标记在屏幕上正确显示为文本而不是呈现为dom元素,但字符串插值失败.html已成功显示为文本,但未评估#{@webcast.name}.如果模板中包含<%= @ webcast.name =>,则成功呈现网络广播名称.

html ruby ruby-on-rails erb string-interpolation

7
推荐指数
1
解决办法
9972
查看次数

如何在pathstring中使用字符串插值导入.less文件?

如何在pathstring中使用字符串插值导入.less文件.

@folder: "LessFiles";
Run Code Online (Sandbox Code Playgroud)

我试过这个

@import "@{folder}/file.less";

Error:
File Not Found. 
HTTP GET Url is "%7Bfolder%7D/file.less" 
Run Code Online (Sandbox Code Playgroud)

还有这个:

@import formatString("{0}/file.less",@folder);

Error:
Server throws System.NullReferenceException
Run Code Online (Sandbox Code Playgroud)

还有这个:

@path: "@{folder}/file.less";

@import @path;

Error:
directive block with unrecognised format on line 16 in file 'test.less':
 [15]: 
 [16]: @import @path;
       --------^
 [17]: 
Run Code Online (Sandbox Code Playgroud)

任何提示如何解决这个问题?

谢谢!

string import string-interpolation less dotless

7
推荐指数
1
解决办法
821
查看次数

Scala:使用字符串插值将函数直接用于println(...)的方法

使用Scala 2.10+字符串可以进行插值.所以我有这个问题.你怎么能这样做:

println(f"$foo(100,51)%1.0f" )
Run Code Online (Sandbox Code Playgroud)

考虑foo是一个函数,如:

def foo(x1:Int , x2:Int) : Double  = { ... }
Run Code Online (Sandbox Code Playgroud)

根据我的理解,这被评估的方式使得foo被认为没有参数因为我得到的消息是:

missing arguments for method foo in object bar;
follow this method with `_' if you want to treat it as a partially applied function
Run Code Online (Sandbox Code Playgroud)

我尝试使用括号,但仍然会出现错误.

scala string-interpolation scala-2.10

7
推荐指数
1
解决办法
1501
查看次数

在JavaScript对象中插入模板变量的方法

我想做以下事情

var obj = {
  animal: "${animal}"
};

var res = magic(obj, {animal: "cat"});

// res => {animal: "cat"}
Run Code Online (Sandbox Code Playgroud)

magic是一些做脏工作的功能.显然obj,使用多个键,嵌套数组等可能会更复杂.模板变量可以在这样的数组中

var obj = {
  animals: ["cat", "dog", "${animal}", "cow"]
};
Run Code Online (Sandbox Code Playgroud)

它可以在阵列中的任何地方,所以简单地做obj.animals[2] = "bat";是不可行的.

我找到了可以实现我想要的下划线tpl库,但我想知道是否有其他解决方案供将来参考,因为我很难找到下划线tpl.

我实际使用的情况是我有一个config.json文件,我有几个声明,如下所示

{
  "task1": {
    "command": "command-line-program",
    "args": [
      "--input", "{{input}}",
      "--flag1",
      "--output", "{{output}}",
      "--flag2",
    ],
    "options": {
      "cwd": "path-to-working-dir"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我用这个解析consig.json JSON.parse(...)我打电话require("child_process").spawncommand,argsoptions在文件中声明的参数,但是args改变了不少,标志添加,重新排序和东西,所以只做config.task1.args[1] = "<input value>"; …

javascript json string-interpolation underscore.js-templating

7
推荐指数
1
解决办法
4295
查看次数

字符串插值输出枚举名称而不是值

我希望有人可以解释有关字符串插值和枚举类型的默认功能.

我有这个枚举:

public enum CommentType
{
    MyComment = 24,
    TheirComment = 25,
    AnotherComment = 26
}
Run Code Online (Sandbox Code Playgroud)

我在字符串中使用它:

Dim sDateModified As String 
sDateModified = $"<div name='commenttype{CommentType.MyComment}'></div>"
Run Code Online (Sandbox Code Playgroud)

我期待CommentType.MyComment被评估并使用int值24.结果应该是:<div name='commenttype24'></div>

但实际发生的是使用标识符,让我: <div name='commenttypeMyComment'></div>

为了获得枚举值,我必须将其转换为整数:

sDateModified = $"<div name='commenttype{Convert.ToInt32(CommentType.MyComment)}'></div>"
Run Code Online (Sandbox Code Playgroud)

它只是让我觉得反直觉.有人可以解释或指出有关它为何如此工作的文档吗?

vb.net enums string-interpolation

7
推荐指数
2
解决办法
1096
查看次数

去字符串插值

尝试int使用%v格式化程序将值插入到字符串中,如下所示,但没有打印任何内容,

package main

import "fmt"

func inc(i int) int {
  return i + 1
}

func main() {
  fmt.Sprintln("inc 1 equal %v", inc(1))
}
Run Code Online (Sandbox Code Playgroud)

如何插入一个int值?

go string-interpolation

6
推荐指数
2
解决办法
1万
查看次数

Visual Studio - 字符串插值快捷方式(无需安装 VS 扩展)

我开始写一条消息,但不知道是否需要插入它。所以,我在消息的中间,想要插入一个$来插入我的字符串。

如果存在一些快捷方式,将会很有帮助。

像这样:

Log("Something happen here, at... (Oh God, I will need interpolate it..) {DateTime.Now}...");
Run Code Online (Sandbox Code Playgroud)

有吗?

c# string string-interpolation visual-studio

6
推荐指数
1
解决办法
1343
查看次数

字符串插值中的 jq 过滤表达式

我一直在尝试将数组减少为字符串以用于字符串插值。

例如。

input = ["123", "456"]
expected output = array=123,456
Run Code Online (Sandbox Code Playgroud)

这是我的尝试

$ echo '["123", "456"]' | jq 'array=\(.|join(","))'
jq: error: syntax error, unexpected INVALID_CHARACTER (Unix shell quoting issues?) at <top-level>, line 1:
array=\(.|join(","))
jq: 1 compile error
Run Code Online (Sandbox Code Playgroud)

json string-interpolation jq

6
推荐指数
1
解决办法
9353
查看次数

使用 HTML 标签的 C# 字符串插值 - Blazor

在Blazor框架中,可以用HTML标签进行字符串插值吗?例如,我想运行一个循环,使用不同的颜色打印一个句子,但这似乎不起作用(因为它似乎不是正确的方法)。

@page "/HJS"
<h3>HateJS</h3>

<div>
    @foreach(string colorX in colors)
    {
        <p style=$"color:{colorX}">@hateJS</p>
    }
</div>

@code {
    private string hateJS = "I hate JS";
    private string[] colors = { "blue", "red" };
}
Run Code Online (Sandbox Code Playgroud)

如果这不是正确/适当的方法,那么它是什么?

c# string-interpolation blazor

6
推荐指数
1
解决办法
6401
查看次数

将动态对象传递给 .NET 6 中的自定义内插字符串处理程序时出现无效实例化异常

我在我的记录器方法中发现升级到 .NET 6 时出现问题LogErrorInterpolatedStringHandler

这是经典的方法:

public static void Log(string message, params object[] pars)
{
    // Log message
}
Run Code Online (Sandbox Code Playgroud)

这是升级后的:

public static void Log(ref LogErrorInterpolatedStringHandler message, params object[] pars)
{
    // Log message
}
Run Code Online (Sandbox Code Playgroud)

我升级了该方法,以获得此处描述的 C# 10 和 .NET 6 的性能改进。

该方法的新版本运行良好,除非dynamic在插值字符串中传递对象时。

这是一个例子:

// Works well   
Logger.Log($"Log: {stringOrEverythingElseObject}");

// Exception
Logger.Log($"Log: {dynamicObject}");
Run Code Online (Sandbox Code Playgroud)

抛出的异常是

通用类型“<>A{00000004}`3”在程序集“MyAssembly,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”中使用了无效实例化。

我发现了一个与我的问题类似的拉取请求,但无法理解如何在我的代码中修复。

你有什么主意吗?谢谢!

c# string-interpolation .net-6.0 c#-10.0

6
推荐指数
1
解决办法
380
查看次数