11

有没有人想出一个从 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 < 3 select number; foreach (var number in query) { Console.WriteLine(number); } } } }

我很沮丧,因为我没有 ISBN(因为我没有购买硬拷贝),所以无法从作者的网站下载代码。

4

3 回答 3

6

我刚刚解决了将代码片段从 Kindle 书复制到您选择的文本/源代码编辑器的问题。在 stackoverflow.com 上的一篇题为“为什么 Chrome 将这个 HTML 呈现为一个完全空白的页面?来自 Node.js,遵循 The Node Beginner Book [关闭]”的帖子中讨论了相同的主题。该特定帖子描述了我遇到的完全相同的问题(相同的 Kindle 书,相同的代码片段,相同的代码症状!)。不幸的是,在任何受访者能够提供确切答案之前,该帖子已过早关闭,否则我会回复该帖子。

然而,我更深入地研究了这个问题,并在从 Kindle 书籍复制代码片段时发现了问题的根本原因:当您从 Kindle 应用程序复制文本时,它使用十六进制代码 0xA0 来表示空格字符,而不是 0x20。十六进制代码 0xA0 是不间断空格的扩展 ASCII。好吧,当您期望复制和粘贴 HTML 文字字符串时,这不起作用,就像上述帖子中的情况一样。

因此,这解释了上述帖子中的行为:原始发布者表示他可以通过手动重新输入所有文本来解决问题。这是因为手动重新输入使用了正确的 0x20。

这还有其他一些我起初不理解但现在解释的症状:我的文本编辑器(Notepad++)没有正确识别我的源代码中的保留关键字。同样,这是因为关键字由 0xA0 分隔,而不是 0x20。Notepad++ 中的关键字解析器必须对 0x20 进行标记。

解决方案:从 Kindle 粘贴文本后,在源代码编辑器中使用正则表达式搜索功能执行搜索和替换。搜索正则表达式 \xA0 并将其替换为 \x20(或者,根据您的编辑器,只需在“替换”字段中键入一个空格键字符 [Notepad++ 就是这样工作的])。

于 2013-05-23T20:47:13.500 回答
0

我发现 Kindle for PC 只是简单地将所有换行符转换为 \x20 使得查找和替换技巧不起作用。我的解决方案不是很好,但它有效:

我下载了 Calibre 并开始使用它。可以这么说,您可以通过谷歌搜索找到使用 Calibre 打开所需内容的方法。

于 2017-02-16T15:34:46.387 回答
0

我会检查出版商的网站。我发现他们经常会发布书籍随附的源代码。如果他们不这样做,那么我购买这本书的可能性就会大大降低。(在某些情况下,无论格式如何,复制/粘贴的数量都无法检索到任何代码,因此尝试从发布者那里获取代码是唯一的方法)。

于 2016-06-09T04:28:38.610 回答