标签: string-interpolation

字符串插值的奇怪错误

我用以下代码得到一个奇怪的错误.

我有一个Example带有伴侣对象的类,我在其中定义了一个字符串SIGN.在类Example我有一个方法,我创建一个正则表达式,我使用字符串插值,以便我可以SIGN用来构建我的正则表达式.

这编译,但我在运行时遇到一个奇怪的错误.这是Scala的错误吗?我正在使用Scala 2.10.3(在Windows 7上).

scala> :paste
// Entering paste mode (ctrl-D to finish)

class Example {
  import Example._
  def regex = s"""$SIGN?\d+""".r
}

object Example {
  private val SIGN = """(\+|-)"""
}


// Exiting paste mode, now interpreting.

defined class Example
defined module Example

scala> val e = new Example
e: Example = Example@77c957d9

scala> e.regex
scala.StringContext$InvalidEscapeException: invalid escape character at index 1 in "?\d+"
        at scala.StringContext$.treatEscapes(StringContext.scala:229)
        at scala.StringContext$$anonfun$s$1.apply(StringContext.scala:90)
        at scala.StringContext$$anonfun$s$1.apply(StringContext.scala:90) …
Run Code Online (Sandbox Code Playgroud)

regex scala string-interpolation

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

Python:使用自定义分隔符格式化字符串

EDITED

我必须使用字典中的值格式化字符串,但字符串已包含大括号.例如:

raw_string = """
    DATABASE = {
        'name': '{DB_NAME}'
   }
"""
Run Code Online (Sandbox Code Playgroud)

但是,当然,raw_string.format(my_dictionary)KeyErro的结果.

有没有办法使用不同的符号.format()

这不是重复的如何在python字符串中打印文字大括号字符并在其上使用.format?因为我需要保持大括号,并使用不同的分隔符.format.

python format syntax string-interpolation cheetah

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

禁用错误警告"可能缺少插补器"

我有一些嵌套的case类,对于特定的序列化机制,我需要提供一个productPrefix包含$字符的内容.像这样

object Foo {
  case class Bar() {
    override def productPrefix = "Foo$Bar"
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我收到一个编译器警告:

Warning:(53, 42) possible missing interpolator: detected interpolated identifier `$Bar`
    override def productPrefix: String = "Foo$Bar"
Run Code Online (Sandbox Code Playgroud)

有没有办法禁用警告,如果可能的话只有这个实例?Scala版本是2.11.8.


编辑:我以为我很聪明:"Foo\u0024Bar".但编译器甚至警告过这一点.另一种解决方案是classOf[Bar].getName,在没有其他外部对象的约束下.

scala compiler-warnings string-interpolation

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

Scala 从变量中插入字符串

在这种情况下,字符串插值工作正常:

val name = "Bill"
val result = s"My Name is ${name}"
Run Code Online (Sandbox Code Playgroud)

当我将它引入变量时,它没有获得插值:

val name = "Bill"
val greeting = "My Name is ${name}"
val result = s"${greeting}"
Run Code Online (Sandbox Code Playgroud)

直接包装greeting不是合适的解决方案,我必须像普通字符串一样处理问候语。

scala string-interpolation

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

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
查看次数

为什么在字符串插值中不总是使用花括号?

https://dart.dev/guides/language/ effective-dart/usage#avoid-using-curly-braces-in-interpolation-when-not-needed effective-dart/usage#avoid-using-curly-braces-in-interpolation-when-not-needed表示在不需要时避免在插值中使用花括号。如果您\xe2\x80\x99 插入一个简单标识符,后面没有紧跟着更多字母数字文本,则应省略 {}。

\n\n

除了不需要进行插值之外,这样做还有什么问题吗?

\n\n

指南说这很好:

\n\n
\'Hi, $name!\'\n    "Wear your wildest $decade\'s outfit."\n    \'Wear your wildest ${decade}s outfit.\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

指南说这很糟糕:

\n\n
\'Hi, ${name}!\'\n    "Wear your wildest ${decade}\'s outfit."\n
Run Code Online (Sandbox Code Playgroud)\n

string-interpolation dart

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

用 qq 括号分隔符不要在 Raku 中插入代码

对不起,如果这在某处记录,但我一直无法找到它。将大括号定界符与 一起使用时qq,不会插入代码:

qq.raku

#!/usr/bin/env raku

say qq{"Two plus two": { 2 + 2 }};
say qq["Two plus two": { 2 + 2 }];
Run Code Online (Sandbox Code Playgroud)
$ ./qq.raku 
"Two plus two": { 2 + 2 }
"Two plus two": 4
Run Code Online (Sandbox Code Playgroud)

显然,这没什么大不了的,因为我可以使用一组不同的分隔符,但我遇到了它并想我会问。

更新

正如@raiph 指出的那样,我忘了提出实际问题:这是它应该工作的方式吗?

quoting string-interpolation raku

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

使用 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
查看次数