【发布时间】:2009-06-08 15:22:03
【问题描述】:
我知道的每种编程语言(Perl、Javascript、PHP、Python、ASP、ActionScript、Commodore Basic)使用单引号和双引号来分隔字符串。
这造成了必须竭尽全力正确处理引号的持续情况,因为引号在字符串的内容中极为常见。
为什么编程语言不使用一些其他字符来分隔字符串,在正常对话中不使用的字符\, |或 { } 例如),这样我们就可以继续我们的生活了吗?
这是真的,还是我忽略了什么?有没有一种简单的方法可以在现代编程语言中停止对字符串使用引号?
打印
我知道 here document 语法,但对于较小的字符串操作,它过于复杂并且格式复杂。
结束;
[更新] 你们中的许多人都很好地说明了仅使用 ASCII 字符的重要性。我更新了示例以反映这一点(反斜杠、管道和大括号)。
【问题讨论】:
-
您说程序员必须竭尽全力才能在字符串中使用引号 - 但为什么呢?我不知道任何一种编程语言都没有一个体面且非常简单的字符串引号转义机制。
-
有很多原因——PHP 有魔术引号,有时打开有时关闭,这意味着没有经验的程序员不确定是否要转义引号。而且,在存储、打印、使用 eval() 等函数时,您必须跟踪字符串是否被转义。而且,这意味着对于不使用最佳方法的人来说,sql 注入的风险会急剧上升实践。
-
你要敲多少次键才能得到这些字符? (¤、|、§ 或 µ)任何超过 2 的内容(IMO)都比简单地使用单引号或双引号本身的效率低。
-
这不是大多数语言或应用程序的问题。您的 cmets 建议使用 PHP 生成 MySQL 查询和 PHP 中的“智能”引号是一个问题。大多数其他语言没有“智能”引号,并且大多数 SQL 接口都支持预准备语句。
-
完全正确。事实上,如果你想写一个关于这个的答案,我很乐意接受它作为最好的答案。
标签: string character language-design delimiter