考虑以下代码:
var age = 3;
console.log("I'm " + age + " years old!");
Run Code Online (Sandbox Code Playgroud)
除了字符串连接之外,还有其他方法可以将变量的值插入字符串吗?
在PHP中,我试图创建一个换行符:
echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo '\r\n';
Run Code Online (Sandbox Code Playgroud)
然后我在记事本中打开创建的文件,它按字面意思写下换行符:
1 John Doe\r \n 1 John Doe\r \n 1 John Doe\r \n
我尝试了很多变化\r\n,但没有工作.为什么新线不能换成新线?
我很困惑为什么这段代码不能编译:
var result = $"{fieldName}{isDescending ? " desc" : string.Empty}";
Run Code Online (Sandbox Code Playgroud)
如果我拆分它,它工作正常:
var desc = isDescending ? " desc" : string.Empty;
var result = $"{fieldName}{desc}";
Run Code Online (Sandbox Code Playgroud) 我知道在PHP中我们可以这样做:
$hello = "foo";
$my_string = "I pity the $hello";
Run Code Online (Sandbox Code Playgroud)
输出: "I pity the foo"
我想知道在JavaScript中是否也可以使用同样的东西.在不使用串联的情况下在字符串中使用变量 - 它看起来更简洁和优雅.
Ruby示例:
name = "Spongebob Squarepants"
puts "Who lives in a Pineapple under the sea? \n#{name}."
Run Code Online (Sandbox Code Playgroud)
成功的Python字符串连接对我来说似乎很冗长.
Java中的字符串构建使我感到困惑.我喜欢这样的事情:
url += "u1=" + u1 + ";u2=" + u2 + ";u3=" + u3 + ";u4=" + u4 + ";";
url += "x=" + u1 + ";y=" + u2 + ";z=" + u3 + ";da1=" + u4 + ";";
url += "qty=1;cost=" + orderTotal + ";ord=" + orderId + "?";
Run Code Online (Sandbox Code Playgroud)
或者,使用StringBuilder,如下所示:
url.append("u1=");
url.append(u1);
url.append(";u2=");
url.append(u2);
url.append(";u3=");
url.append(u3);
url.append(";u4=");
url.append(u4);
url.append(";");
url.append("x=");
url.append(u1);
url.append(";y=");
url.append(u2);
url.append(";z=");
url.append(u3);
url.append(";da1=");
url.append(u4);
url.append(";");
url.append("qty=1;");
url.append("cost=");
url.append(orderTotal);
url.append(";ord=");
url.append(orderId);
url.append("?");
Run Code Online (Sandbox Code Playgroud)
我错过了一些东西.GOT是一种更好的方式.就像是:
代替:
urlString += "u1=" …Run Code Online (Sandbox Code Playgroud) 在C#6中有一个新功能:插值字符串.
这些允许您将表达式直接放入代码中,而不是依赖于索引:
string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y());
Run Code Online (Sandbox Code Playgroud)
变为:
string s = $"Adding \"{x}\" and {this.Y()} to foobar.";
Run Code Online (Sandbox Code Playgroud)
但是,我们在使用逐字符串(主要是SQL语句)的多行中有很多字符串,如下所示:
string s = string.Format(@"Result...
Adding ""{0}"" and {1} to foobar:
{2}", x, this.Y(), x.GetLog());
Run Code Online (Sandbox Code Playgroud)
将这些恢复为常规字符串似乎很麻烦:
string s = "Result...\r\n" +
$"Adding \"{x}\" and {this.Y()} to foobar:\r\n" +
x.GetLog().ToString();
Run Code Online (Sandbox Code Playgroud)
如何同时使用逐字和插值字符串?
如何在字符串插值中逃避美元符号?
def getCompanion(name: String) = Class.forName(s"my.package.$name\$")
// --> "error: unclosed string literal"
Run Code Online (Sandbox Code Playgroud) 我想在C#中做以下事情(来自Python背景):
strVar = "stack"
mystr = "This is %soverflow" % (strVar)
Run Code Online (Sandbox Code Playgroud)
如何用字符串外的值替换字符串中的标记?
使用字符串插值之间是否存在显着的性能差异:
myString += $"{x:x2}";
Run Code Online (Sandbox Code Playgroud)
vs String.Format()?
myString += String.Format("{0:x2}", x);
Run Code Online (Sandbox Code Playgroud)
我只是问,因为Resharper正在提示修复,我之前被愚弄了.