(buffer-substring-no-properties) 反斜杠处理
(buffer-substring-no-properties) backslash handling
下午好。文中,记录
@samp{\}
,代码
(buffer-substring-no-properties (+ nach 4) (- (point) 4))
这里是捕获这个区域,在
的输出
"@samp{\}"
函数。问题是如何获得未转义的正斜杠。谢谢
"@samp{\}"
代表字符串@samp{\}
。和原文没什么区别
当您要求 Emacs 打印 buffer-substring-no-properties
的 return 值时,您看到的是字符串的 打印表示形式 -- 这相当于双引号 字符串的阅读语法 (就像您在代码中编写的那样)——其中一个反斜杠必须用另一个反斜杠转义。
参考elisp手册:
- C-hig
(elisp)Printed Representation
- C-hig
(elisp)Syntax for Strings
- C-hig
(elisp)Nonprinting Characters
对代码的进一步更改给出了结果,即不是对读取行记录的更正,而是将不幸行 "@samp {\}"
插入回文本中的更改。功能介绍
(defun zamenaOBJ (спсОбктв)
"Зменить obzx оригиналом"
(goto-char 1)
(while (re-search-forward "[Bb]jkt\([[:digit:]]\)+" nil t 1)
(replace-match (cdr (assoc (downcase (match-string 0)) спсОбктв)) t)))
这里是出错时的数据(收到的是什么
(buffer-substring-no-properties)
并保存在关联列表中
(cdr (assoc (downcase (match-string 0)) спсОбктв))
"@samp{\}"
错误本身
(replace-match (cdr (assoc (downcase (match-string 0)) спсОбктв)) t)
Invalid use of ‘\’ in replacement text
如果这样写:
(replace-match (prin1-to-string (cdr (assoc (downcase (match-string 0)) спсОбктв)) t))
все замены по тексту были окружены двойной кавычкой, если же указывался аргумент noescape в t для prin1-to-string]:[=20
(replace-match (prin1-to-string (cdr (assoc (downcase (match-string 0)) спсОбктв)) t) t)
或
(replace-match (princ (cdr (assoc (downcase (match-string 0)) спсОбктв)) t))
错误又回来了
通过添加第二个参数文字替换匹配解决
(replace-match (cdr (assoc (downcase (match-string 0)) спсОбктв)) t t)
下午好。文中,记录
@samp{\}
,代码
(buffer-substring-no-properties (+ nach 4) (- (point) 4))
这里是捕获这个区域,在
的输出"@samp{\}"
函数。问题是如何获得未转义的正斜杠。谢谢
"@samp{\}"
代表字符串@samp{\}
。和原文没什么区别
当您要求 Emacs 打印 buffer-substring-no-properties
的 return 值时,您看到的是字符串的 打印表示形式 -- 这相当于双引号 字符串的阅读语法 (就像您在代码中编写的那样)——其中一个反斜杠必须用另一个反斜杠转义。
参考elisp手册:
- C-hig
(elisp)Printed Representation
- C-hig
(elisp)Syntax for Strings
- C-hig
(elisp)Nonprinting Characters
对代码的进一步更改给出了结果,即不是对读取行记录的更正,而是将不幸行 "@samp {\}"
插入回文本中的更改。功能介绍
(defun zamenaOBJ (спсОбктв)
"Зменить obzx оригиналом"
(goto-char 1)
(while (re-search-forward "[Bb]jkt\([[:digit:]]\)+" nil t 1)
(replace-match (cdr (assoc (downcase (match-string 0)) спсОбктв)) t)))
这里是出错时的数据(收到的是什么
(buffer-substring-no-properties)
并保存在关联列表中
(cdr (assoc (downcase (match-string 0)) спсОбктв))
"@samp{\}"
错误本身
(replace-match (cdr (assoc (downcase (match-string 0)) спсОбктв)) t)
Invalid use of ‘\’ in replacement text
如果这样写:
(replace-match (prin1-to-string (cdr (assoc (downcase (match-string 0)) спсОбктв)) t))
все замены по тексту были окружены двойной кавычкой, если же указывался аргумент noescape в t для prin1-to-string]:[=20
(replace-match (prin1-to-string (cdr (assoc (downcase (match-string 0)) спсОбктв)) t) t)
或
(replace-match (princ (cdr (assoc (downcase (match-string 0)) спсОбктв)) t))
错误又回来了
通过添加第二个参数文字替换匹配解决
(replace-match (cdr (assoc (downcase (match-string 0)) спсОбктв)) t t)