为什么会出现一种趋势,为人们使用单引号'
周围string
,而不是双引号"
书写时的JavaScript?是否有任何minifcation或掉毛下面的工具的Java/ç/C++周围有双引号的惯例string
和周围单一单引号char
和使用更好的缩小/绒毛检查?反之亦然?它是来自php还是bash的保留,其中双引号字符串执行单引号字符串更昂贵?
以下示例打印"SAME":
if (q/\\a/ eq q/\a/) {
print "SAME\n";
}
else {
print "DIFFERENT\n";
}
Run Code Online (Sandbox Code Playgroud)
我理解这与文档一致.但我认为这种行为是不可取的.是否需要在单引号字符串中逃避反弹lilteral?如果我想要2个反冲,我需要指定4; 这似乎不方便.
Perl不应该检测反斜杠是否作为转义字符?例如,当反斜杠不在分隔符之前时,应将其视为文字; 如果是这种情况,我不需要3个反斜杠表示两个,例如,
q<a\\b>
Run Code Online (Sandbox Code Playgroud)
代替
q<a\\\b>.
Run Code Online (Sandbox Code Playgroud) 我在SQL Server上有以下查询,其中一些值存储在先前计算的变量中:
SET @Command = N'INSERT INTO Products (Id
,Region
,Name
,Category
,CreatedBy
,CreatedOn
,) SELECT ' + @Id + ',
Region,
''' + @ProductName + ''',
Category,
CreatedBy,
CreatedOn FROM ' + @ProductTable + '
WITH (NOLOCK) WHERE Id IS NOT NULL';
EXEC(@Command)
Run Code Online (Sandbox Code Playgroud)
它运行正常,除非@ProductName的值包含引号(例如Jim的Product),在这种情况下,我将收到以下错误:字符串后的引号未封闭
有没有办法在这样的动态查询中处理变量中的单引号,其中插入的所选值之一(在这种情况下为@ProductName)直接是要插入的值,而不是源表上的实际列名需要检索其值以进行插入?
为什么只是简单地将我的单行'
改为而不是"
影响代码的行为?第一行代码产生了预期的结果,第二行代码给出了(给我!)一个意想不到的结果,打印出一个意想不到的数组引用。
$ echo "puke|1|2|3|puke2" | perl -lne 'chomp;@a=split(/\|/,$_);print $a[4];'
puke2
$ echo "puke|1|2|3|puke2" | perl -lne "chomp;@a=split(/\|/,$_);print $a[4];"
Run Code Online (Sandbox Code Playgroud)
这是 Perl 版本:
$ perl -v
This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi
ARRAY(0x1f79b98)
Run Code Online (Sandbox Code Playgroud) 例子:
$ foo="text with 'single quotes'"
$ echo $foo
Run Code Online (Sandbox Code Playgroud)
给我
text with 'single quotes'
Run Code Online (Sandbox Code Playgroud)
这是我想要的输出,但我想传递$foo
具有相同结果的标准输入。类似于以下之一:
$ xargs echo <<< $foo
$ echo $foo | xargs echo
Run Code Online (Sandbox Code Playgroud)
这两个都给我
text with single quotes
Run Code Online (Sandbox Code Playgroud)
有没有办法保留单引号而不控制 foo 的内容?
我正在寻找一种无论命令如何都有效的解决方案,我选择它是xargs echo
因为我认为它简单地显示了行为。该解决方案可能不存在,但如果有人有任何提示,将不胜感激!
我有一个Ruby形式的字符串: "Henry's string"
每一个gsub
和tr
我试着让我形成像"Henry\\'s string"
,"Henry\\\\'s string"
等等.
这些都是逃避反斜杠,但留给我一个未转义的单引号.
我试过了:
"Henry's string".gsub("'","\\\\'")
有不同数量的\
"Henry's string".gsub(/'/) {|x| "\\\\#{x}"}
再次以不同的数量
"Henry's string".gsub(/'/) {|x| "\\#{x}"}.gsub(/\\/) {|x| "#{x}"}
我想我需要一个奇数\
来完全逃脱'(为了加载到MySQL),但我无法弄清楚如何得到这个.
我有一个特定于项目的命令,它以以下形式生成输出:
Parameter1='value1' Parameter2='Value2' ... #变量的单引号值。
但我想明确分配该值并需要打印必须显示相应值的参数。
这里xtc_cmd get是项目特定的 cmd
root@renway:~# FOO=`xtc_cmd get lan_ifname lan_ipaddr lan_netmask`
root@renway:~#
root@renway:~# echo $FOO
SYSCFG_lan_ifname='br1' SYSCFG_lan_ipaddr='10.0.0.1' SYSCFG_lan_netmask='255.255.255.0'
root@renway:~#
root@renway:~# echo $SYSCFG_lan_ifname
root@renway:~# echo $SYSCFG_lan_ipaddr
root@renway:~# echo $SYSCFG_lan_netmask
Run Code Online (Sandbox Code Playgroud)
但是,在变量打印它们的值之后,我尝试了“ eval $FOO ”。由于安全原因,我想跳过'eval'。
分享脚本执行的输出:
root@renway:~# /tmp/test.sh
++ xtc_cmd get lan_ifname lan_ipaddr lan_netmask
+ FOO='SYSCFG_lan_ifname='\''br1'\''
SYSCFG_lan_ipaddr='\''10.0.0.1'\''
SYSCFG_lan_netmask='\''255.255.255.0'\'''
+ echo 'SYSCFG_lan_ifname='\''br1'\''' 'SYSCFG_lan_ipaddr='\''10.0.0.1'\''' 'SYSCFG_lan_netmask='\''255.255.255.0'\'''
SYSCFG_lan_ifname='br1' SYSCFG_lan_ipaddr='10.0.0.1' SYSCFG_lan_netmask='255.255.255.0'
Run Code Online (Sandbox Code Playgroud)
如何实际分配值并打印这些变量。
输入感兴趣的字符串
FOO='SYSCFG_lan_ipaddr='\''10.0.0.1'\'' SYSCFG_sysdate='\'''\''$(date>> /tmp/date.txt)0'\'''\'' SYSCFG_lan_pd_interfaces='\''brlan0 brlan19 brlan20'\'''
Run Code Online (Sandbox Code Playgroud)
预期输出:
foo_SYSCFG_lan_ipaddr=10.0.0.1
foo_SYSCFG_sysdate='$(date>> /tmp/date.txt)0' #single quoted value
foo_SYSCFG_lan_pd_interfaces=brlan0 brlan19 brlan20 #whitespace separated string …
Run Code Online (Sandbox Code Playgroud) 在 中zsh
,当我python -c 'print('howdy')'
从命令行执行时,它会产生以下错误。
Traceback (most recent call last):
File "<string>", line 1, in <module>
NameError: name 'howdy' is not defined
Run Code Online (Sandbox Code Playgroud)
但是,这python -c 'print("howdy")'
不会,而是产生我期望的输出,即howdy
(作为字符串)发送到stdout
?
我认为 python 在单引号或双引号上是不可知的
在javascript我可以写
var s = 'He said "Hello" to me';
or
var s = "don't be sad";
Run Code Online (Sandbox Code Playgroud)
换句话说,如果我想在字符串中使用双引号,我可以使用单引号声明字符串.如果我想在字符串中使用单引号,我可以使用双引号声明字符串.这非常方便.有人找到了在C#中做类似事情的方法吗?
单引号很简单,c#已经可以嵌入单引号.至于双引号,似乎有两种常见的选择.
使用反斜杠转义字符
var s = "He said \"Hello\" to me";
Run Code Online (Sandbox Code Playgroud)使用单引号并用双引号替换它们
var s = "He said 'Hello' to me";
s = s.Replace("'","\"");
Run Code Online (Sandbox Code Playgroud)我可以选择2,但更好更好.