openlang

取得保留原始大小写的 symbol-name

Common Lisp 能否给出一个没有转成大写的 symbol-name 结果?

(symbol-name 'cCdD)
;; => "CCDD"

(ANOTHER_FUNCTION? 'cCdD)
;; => "cCdD"

我想把符号名当作字符串使用,同时保留字母的大小写。

从英语翻译查看原文

后续讨论 2

顺着彼此的依据读下去
  1. 固定链接

    符号名实际上已经是大写,因为读取器已经转换过了。要避免这种情况,可以修改 readtable-case,或者对符号进行转义,既可以用竖线包住它,像 '|cCdD|,也可以用反斜杠转义后面的字符,像 '\cC\dD。

    从英语翻译查看原文
  2. 固定链接

    这个问题有比较详细的解释,Common Lisp 为什么忽略字母大小写 (https://stackoverflow.com/questions/7375537/why-is-common-lisp-case-insensitive)

    “readtable 对象包含 readtable-case 属性,它决定读取器在驻留和求值时如何处理读入的符号。可以用 setf 把 readtable-case 的值设为 :upcase(default)、:downcase、:preserve 或 :invert。

    readtable-case 的默认值是 :upcase,所以读取器会把遇到的每个符号都转成大写。”

    从英语翻译查看原文

同一个问题的其他角度

  1. 调用 String.Format 时怎样转义百分号?

    我的 strings.xml 文件保存了一个 SQL 查询,我想在代码中用 String.Format 构造最终字符串。SELECT 查询中有一个类似下面这样的 like 子句。 为了格式化,我用 %1$s 替换 'pattern',得到下面这样。…

    回复 3最近活动 java
  2. 在 F# 中格式化字符串

    我正在第一次编写 F# 库 使用 string.Format 时,提示说这个函数不存在。 是我哪里弄错了,还是本来就不能用?

    回复 2最近活动 fsharp
  3. 提取 tcl 字符串中的一部分

    我想用 tcl 拆开 Reports/Report#2.rpt,只留下 Report#2.rpt。我试了下面的办法,但运行时没有得到任何输出。

    回复 2最近活动 tcl