为什么流行的编程语言不使用其他字符来分隔字符串?

And*_*ift 10 string language-design character delimiter

我所知道的每种编程语言(Perl,Javascript,PHP,Python,ASP,ActionScript,Commodore Basic)都使用单引号和双引号来分隔字符串.

这将创建不必去正在进行的情况很大的篇幅来正确对待报价,因为报价在字符串的内容极为常见.

为什么编程语言不使用其他字符来分隔字符串,而是在普通会话中使用的字符串\,| 或{}例如)所以我们可以继续我们的生活?

这是真的吗,还是我忽略了什么?是否有一种简单的方法可以停止在现代编程语言中使用字符串的引号?

print <<< END
我在这里知道文档语法,但是对于较小的字符串操作,它过于复杂并且使格式化变得复杂.
结束;

[更新]你们中的许多人都提到了仅使用ASCII字符的重要性.我更新了示例以反映(反斜杠,管道大括号).

Que*_*tin 12

Perl允许您使用您喜欢的任何字符

 "foo $bar" eq
 qq(foo $bar) eq
 qq[foo $bar] eq
 qq!foo $bar! eq
 qq#foo $bar# etc

Meanwhile
 'foo $bar' eq
 q(foo $bar) eq
 q[foo $bar] eq
 q!foo $bar! eq
 q#foo $bar# etc
Run Code Online (Sandbox Code Playgroud)

语法扩展到其他功能,包括正则表达式,如果您处理URI,这将很方便.

 "http://www.example.com/foo/bar/baz/" =~ /\/foo/[^\/]+\/baz\//;
 "http://www.example.com/foo/bar/baz/" =~ m!/foo/[^/]+/baz/!;
Run Code Online (Sandbox Code Playgroud)


Ren*_*soo 8

目前:"打字机"'引用'标记

使用我们目前使用的引号有很多充分的理由:

  • 键盘很容易找到引号 - 所以它们很容易打字,而且它们必须很容易,因为经常需要字符串.

  • 报价是ASCII格式 - 大多数编程工具只处理好ASCII.您几乎可以在任何可以想象的环境中使用ASCII.当你在一些远程服务器上通过telnet连接修复你的程序时,这很重要.

  • 行情有很多版本 - 单引号,双引号,后引号.因此,语言可以为不同的引用字符串分配不同的含义.这些不同的引号也可以解决"引号"问题中的"引号".

  • 引用是很自然的 - 英语使用引号在编程语言之前很久就标记了文本段落.在语言学中,引号的使用方式与编程语言完全相同.引用是自然相同的+和 - 是自然的加法和减法.

替代方案:"印刷""正确"引用

从技术上讲,它们更优越.一个很大的优点是您可以轻松区分开始和结束报价.但它们很难打字,而且它们不是ASCII格式.(我不得不把它们放在标题中,使它们在这个StackOverflow字体中可见.)

希望有一天,当ASCII只是历史学家关心的东西,键盘变成了完全不同的东西时(如果我们甚至会有键盘),那么会有一种使用更好的引号的编程语言......


小智 5

Python确实有一个替代的字符串分隔符,其中包含三重双引号"""Some String""".

单引号和双引号用于大多数语言,因为它是大多数书面语言的标准分隔符.

  • 我可能不同意“大多数书面语言中的标准分隔符”。例如,法国人使用“和”——中国人使用什么?等等等等。更好的说法是“英语中使用的标准分隔符”。 (2认同)

Mik*_*cic 3

Python 有一个附加的字符串类型,使用三个双引号,

"""like this"""
Run Code Online (Sandbox Code Playgroud)

除此之外,Perl 允许您使用任何您想要的分隔符,

q^ like this ^
Run Code Online (Sandbox Code Playgroud)

我认为在大多数情况下,使用常规字符串分隔符是因为它们有意义。字符串用引号引起来。除此之外,大多数开发人员习惯于使用他们的常识来处理字符串,而彻底改变字符串的呈现方式可能是一个困难的学习曲线。