Questions tagged «string-interpolation»

字符串插值是用给定值替换字符串中定义的字符序列。与使用串联运算符组成的多个字符串和值相比,可以认为此表示形式用于格式化和定义内容更直观。字符串插值通常在许多编程语言中作为一种语言功能实现,包括PHP,Haxe,Perl,Ruby,Python,C#(6.0版及更高版本)等。




15
PHP-如何创建换行符?
在PHP中,我尝试创建换行符: echo $clientid; echo ' '; echo $lastname; echo ' '; echo '\r\n'; 然后,我在记事本中打开创建的文件,它按字面意义写换行符: 1 John Doe \ r \ n 1 John Doe \ r \ n 1 John Doe \ r \ n 我尝试了的多种变体\r\n,但没有任何效果。为什么换行符不变成换行符?


1
如何将逐字字符串与插值一起使用?
在C#6中,有一个新功能:内插字符串。 这些使您可以将表达式直接放入代码中,而不是依赖索引: string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y()); 成为: string s = $"Adding \"{x}\" and {this.Y()} to foobar."; 但是,我们使用逐字字符串(主要是SQL语句)在多行中有很多字符串,如下所示: string s = string.Format(@"Result... Adding ""{0}"" and {1} to foobar: {2}", x, this.Y(), x.GetLog()); 将它们恢复为常规字符串似乎很麻烦: string s = "Result...\r\n" + $"Adding \"{x}\" and {this.Y()} to foobar:\r\n" …




10
如何推迟/推迟对f弦的评估?
我正在使用模板字符串生成一些文件,为此我喜欢新的f字符串的简洁性,以减少类似以下内容的我以前的模板代码: template_a = "The current name is {name}" names = ["foo", "bar"] for name in names: print (template_a.format(**locals())) 现在,我可以直接替换变量: names = ["foo", "bar"] for name in names: print (f"The current name is {name}") 但是,有时在其他地方定义模板是有意义的-在代码中较高的位置,或者从文件或其他内容中导入模板。这意味着模板是带有格式标记的静态字符串。字符串上必须发生一些事情,以告诉解释器将字符串解释为新的f字符串,但是我不知道是否有这种事情。 有什么方法可以引入字符串并将其解释为f字符串,从而避免使用.format(**locals())调用? 理想情况下,我希望能够像这样进行编码...(magic_fstring_function我不理解的部分在哪里出现): template_a = f"The current name is {name}" # OR [Ideal2] template_a = magic_fstring_function(open('template.txt').read()) names …

4
如何在双引号字符串中使用对象的属性?
我有以下代码: $DatabaseSettings = @(); $NewDatabaseSetting = "" | select DatabaseName, DataFile, LogFile, LiveBackupPath; $NewDatabaseSetting.DatabaseName = "LiveEmployees_PD"; $NewDatabaseSetting.DataFile = "LiveEmployees_PD_Data"; $NewDatabaseSetting.LogFile = "LiveEmployees_PD_Log"; $NewDatabaseSetting.LiveBackupPath = '\\LiveServer\LiveEmployeesBackups'; $DatabaseSettings += $NewDatabaseSetting; 当我尝试在字符串execute命令中使用属性之一时: & "$SQlBackupExePath\SQLBackupC.exe" -I $InstanceName -SQL ` "RESTORE DATABASE $DatabaseSettings[0].DatabaseName FROM DISK = '$tempPath\$LatestFullBackupFile' WITH NORECOVERY, REPLACE, MOVE '$DataFileName' TO '$DataFilegroupFolder\$DataFileName.mdf', MOVE …

1
没有花括号时,为什么字符串插值在Ruby中起作用?
在Ruby中使用字符串插值的正确方法如下: name = "Ned Stark" puts "Hello there, #{name}" #=> "Hello there, Ned Stark" 这就是我打算一直使用它的方式。 但是,我注意到Ruby的字符串插值有些奇怪。我已经注意到,字符串插值在Ruby中工作,而实例变量没有花括号。例如: @name = "Ned Stark" puts "Hello there, #@name" #=> "Hello there, Ned Stark" 并且尝试与非实例变量进行相同的操作不起作用。 name = "Ned Stark" puts "Hello, there, #name" #=> "Hello there, #name" 我已经在1.9.2和1.8.7中成功地尝试了这一点。 为什么这样做?口译员在做什么?

8
如何解决“字符串插值为可选值生成调试描述;你是说要明确吗?” 在Xcode 8.3 beta中?
从beta 8.3开始,成千上万的警告“字符串插值会为可选值生成调试说明;您是要明确显示此值?” 出现在我的代码中。 例如,在以下情况下会弹出警告,其中选项可能会导致无效: let msg = "*** Error \(options["taskDescription"]): cannot load \(sUrl) \(error)" 按照之前的设计,对于我(和编译器)来说,可以将可选值插值为“ nil”是可以的。但是编译器改变了主意。 编译器建议的是添加一个具有以下描述的String构造函数: let msg = "*** Error \(String(describing: options["taskDescription"])): cannot load \(sUrl) \(error)" 显然,结果在我看来是明确的,但也非常麻烦。有更好的选择吗?我是否必须解决所有这些警告,或者更好地等待下一个Beta?

7
如何在C#6中使用带转义符的转义符?
我一直在使用字符串插值并喜欢它,但是遇到一个问题,我试图在输出中包含反斜杠,但无法使其正常工作。 我想要的是这样的.. var domain = "mydomain"; var userName = "myUserName"; var combo = $"{domain}\{userName}" 我想要组合的输出是 myDomain\myUserName 我得到的是关于\是转义字符的语法错误。如果我输入\\,则snytax错误消失了,但输出为myDomain \\ myUsername 如何在插入的字符串中包含转义字符?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.