如何从 Kindle PC 复制代码并保留格式
Posted
技术标签:
【中文标题】如何从 Kindle PC 复制代码并保留格式【英文标题】:How can I copy code from Kindle PC and preserve formatting 【发布时间】:2011-11-25 20:08:06 【问题描述】:有没有人想出一个从 Kindle PC 复制代码的好方法?
我刚刚第一次将编程书下载到 Kindle PC。书中的代码格式非常好,我想直接将代码从 Kindle PC 书复制到 Visual Studio,而不必使用自动缩进。出于某种原因,当我从书中复制文本时,没有保留任何空格、制表符或换行符。我真的是这样结束的:
使用系统;使用 System.Collections.Generic;使用 System.Linq;命名空间 NumericQuery class Program static void Main(string[] args) List list = new List() 1, 2, 3 ; var query = from number in list where number
我很沮丧,因为我没有 ISBN(因为我没有购买硬拷贝),所以无法从作者的网站下载代码。
【问题讨论】:
每个人的 ISBN 号都是一样的。 在大多数情况下,URL 中的 ASIN 是 ISBN(无论如何都会在页面上列出)。这不能保证(有时会发生冲突,通常是出版商重复使用绝版书籍中的 ISBN 的旧书籍),但大多数时候它是正确的。 不能复制粘贴文本?!这太荒谬了。为什么老实人总要为别人买单? 【参考方案1】:我刚刚解决了将代码 sn-ps 从 Kindle 书复制到您选择的文本/源代码编辑器的问题。在 ***.com 上的一篇题为“为什么 Chrome 将这个 html 呈现为一个完全空白的页面?来自 Node.js,遵循 Node Beginner Book [关闭]”的帖子中讨论了相同的主题。该特定帖子描述了我遇到的确切相同的问题(相同的 Kindle 书,相同的代码 sn-p,相同的代码症状!)。不幸的是,在任何受访者可以提供确切答案之前,该帖子已过早关闭,否则我会回复该帖子。
但是,我更深入地研究了这个问题,并在从 Kindle 书籍复制代码 sn-ps 时发现了问题的根本原因:当您从 Kindle 应用程序复制文本时,它使用十六进制代码 0xA0 表示空格字符,而不是 0x20 .十六进制代码 0xA0 是不间断空格的扩展 ASCII。好吧,当您希望复制和粘贴 HTML 文字字符串时,这不起作用,就像上述帖子中的情况一样。
因此这解释了上述帖子中的行为:原始发布者表示他可以通过手动重新输入所有文本来解决问题。这是因为手动重新输入使用了正确的 0x20。
这还有其他一些我起初不理解但现在解释的症状:我的文本编辑器 (Notepad++) 没有正确识别我的源代码中的保留关键字。同样,这是因为关键字由 0xA0 分隔,而不是 0x20。 Notepad++ 中的关键字解析器必须对 0x20 进行标记。
解决方案:从 Kindle 粘贴文本后,在源代码编辑器中使用正则表达式搜索功能执行搜索和替换。搜索正则表达式 \xA0 并将其替换为 \x20(或者,根据您的编辑器,只需在“替换”字段中输入一个空格键字符 [Notepad++ 就是这样工作的])。
【讨论】:
【参考方案2】:我会查看出版商的网站。我发现他们经常会发布书籍随附的源代码。如果他们不这样做,那么我购买这本书的可能性就会大大降低。 (在某些情况下,再多的复制/粘贴都无法检索到任何代码,无论格式如何,因此尝试从发布者那里获取代码是唯一的方法。
【讨论】:
【参考方案3】:我发现 Kindle for PC 只是将所有换行符转换为 \x20 导致查找和替换技巧不起作用。我的解决方案不是很好,但很有效:
我下载了 Calibre 并开始使用它。可以这么说,您可以通过谷歌搜索找到使用 Calibre 打开所需内容的方法。
【讨论】:
以上是关于如何从 Kindle PC 复制代码并保留格式的主要内容,如果未能解决你的问题,请参考以下文章
复制/粘贴到 Word 时如何保留 rstudio 的格式?