.NET 3.5 C#是否允许我们在字符串变量中包含变量,而不必使用+ concatenator(或string.Format()).
例如(在伪,我使用$符号来指定变量):
DateTime d = DateTime.Now;
string s = "The date is $d";
Console.WriteLine(s);
Run Code Online (Sandbox Code Playgroud)
输出:
日期是4/12/2011 11:56:39 AM
编辑
由于提示string.Format()的一些响应,我只能假设当我提到" ...(或string.Format(),就此而言)时,我的原始帖子不清楚".要清楚,我很清楚string.Format()方法.但是,在我正在处理的特定项目中,string.Format()对我没有帮助(实际上比+连接器更差).
另外,我推断大多数/你们都想知道我的问题背后的动机是什么(我想如果我按原样阅读我的问题,我会有同样的感受).
如果你是一个好奇的人,这就是它的缺点:
我正在创建一个在Windows CE设备上运行的Web应用程序.由于Web服务器的工作原理,我在字符串变量中创建了整个网页内容(css,js,html等).例如,我的.cs托管代码可能有这样的东西:
string GetPageData()
{
string title = "Hello";
DateTime date = DateTime.Now;
string html = @"
<!DOCTYPE html PUBLIC ...>
<html>
<head>
<title>$title</title>
</head>
<body>
<div>Hello StackO</div>
<div>The date is $date</div>
</body>
</html>
";
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,能够在不需要连接的情况下指定变量,使事情变得更容易 - 特别是当内容增加时.
我正在与一个非常古老的系统连接,我需要生成的文件需要一个由字符串组成的字段,但需要正好是15个宽度.
我想要这样的东西:
val companyName = "FooBar, Inc" // 11 chars
f"$companyName%s"
Run Code Online (Sandbox Code Playgroud)
回来:
" FooBar, Inc"
Run Code Online (Sandbox Code Playgroud)
是否有一种灵巧的方式来做我正在尝试使用字符串插值?
我不明白,为什么会eval这样:
"123 #{456.to_s} 789" # => "123 456 789"
eval('123 #{456.to_s} 789') # => 123
Run Code Online (Sandbox Code Playgroud)
如何插入内部的字符串eval?
更新:
谢谢你,朋友们.有效.
因此,如果您有一个字符串变量#{},您希望稍后进行评估,则应按照以下说明进行操作:
string = '123 #{456} 789'
eval("\"" + string + "\"")
# => 123 456 789
Run Code Online (Sandbox Code Playgroud)
要么
string = '123 #{456} 789'
eval('"' + string + '"')
# => 123 456 789
Run Code Online (Sandbox Code Playgroud) 在MVC 6源代码中,我看到一些代码行,其中包含带有$符号的字符串.
正如我之前从未见过的那样,我认为它是C#6.0中的新功能.我不确定.(我希望我是对的,否则我会感到震惊,因为我从来没有碰过它.
它就像:
var path = $"'{pathRelative}'";
Run Code Online (Sandbox Code Playgroud) 我在html页面中使用了以下插值.
<div>{{config.CompanyAddress.replace('\n','<br />')}}</div>
Run Code Online (Sandbox Code Playgroud)
并且也使用了
<div>{{config.CompanyAddress.toString().replace('\n','<br />')}}</div>
Run Code Online (Sandbox Code Playgroud)
但两者都显示如下文字
{{config.CompanyAddress.replace('\n','<br />')}}
{{config.CompanyAddress.toString().replace('\n','<br />')}}
Run Code Online (Sandbox Code Playgroud) 我有一个美元(货币)金额,我试图在 Text 元素中使用字符串插值来显示该金额。目前,它显示如 9.9900000。我希望该值仅显示为 9.99。
struct ContentView: View {
var productPrice: Double = 9.99
var body: some View {
Text("\(productPrice)")
}
}
Run Code Online (Sandbox Code Playgroud) 在Perl中,我可以执行以下操作:
my $home = "/home";
my $alice = "$home/alice";
Run Code Online (Sandbox Code Playgroud)
我可以在YAML中执行以下操作:
Home: /home
Alice: $Home/alice
Run Code Online (Sandbox Code Playgroud)
那么"爱丽丝" /home/alice到底有效吗?
如何将经典string转换为f-string?:
variable = 42
user_input = "The answer is {variable}"
print(user_input)
Run Code Online (Sandbox Code Playgroud)
答案是{变量}
f_user_input = # Here the operation to go from a string to an f-string
print(f_user_input)
Run Code Online (Sandbox Code Playgroud)
答案是42
我%(asctime)s在日志模块中看到这样
%()s代替是%s什么意思?
我只知道%s意思是“字符串”,我%()s在互联网上找不到其他信息。
我正在尝试使用插值在另一个命名空间中创建一个变量,但在咨询https://docs.raku.org/language/packages#index-entry-::()后无法使其工作。在测试不同的东西时,我发现了一些让我感到困惑的东西。这有效:
#!/usr/bin/env raku
$Foo::bar = 'foobar';
say $Foo::bar;
Run Code Online (Sandbox Code Playgroud)
#!/usr/bin/env raku
$Foo::bar = 'foobar';
say $Foo::bar;
Run Code Online (Sandbox Code Playgroud)
但这不是:
#!/usr/bin/env raku
my $bar = 'bar';
$Foo::($bar) = 'foobar';
say $Foo::bar;
Run Code Online (Sandbox Code Playgroud)
$ ./package-interpolate.raku
No such symbol '$bar'
in block <unit> at ./package-interpolate.raku line 4
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?谢谢!
c# ×2
python ×2
string ×2
.net-3.5 ×1
angular ×1
c#-6.0 ×1
double ×1
eval ×1
javascript ×1
namespaces ×1
padding ×1
python-3.6 ×1
raku ×1
ruby ×1
scala ×1
scala-2.10 ×1
swiftui ×1
yaml ×1