2011-09-27 65 views
9

有沒有人想出了一種從Kindle PC複製代碼的好方法?如何從Kindle PC複製代碼並保留格式

我剛剛下載了一本編程書到Kindle PC第一次。本書中的代碼格式非常好,我想直接從Kindle PC書中將代碼複製到Visual Studio,而無需使用自動縮進。出於某種原因,當我從書中複製文本時,沒有任何空格,製表符或換行符被保留。我從字面上結束了這一點:

using System;使用System.Collections.Generic;使用System.Linq; namespace NumericQuery {class Program {static void Main(string [] args){List list = new List(){1,2,3}; var query =從列表中的數字其中編號< 3選擇編號; foreach(查詢中的var編號){Console.WriteLine(number);由於我沒有ISBN(因爲我沒有購買硬拷貝),所以我無法從作者網站下載代碼,所以感到沮喪。

+0

ISBN號對每個人都是一樣的。 –

+0

在大多數情況下,URL中的ASIN是ISBN(無論如何都列在頁面上)。這是不能保證的(有時會發生碰撞,通常是出版商從絕版書中重新使用ISBN的舊書),但大多數情況下都是正確的。 –

+0

無法複製粘貼文本?!這非常荒謬。爲什麼誠實的人總是要爲別人付錢? – franssu

回答

4

我剛剛解決了將Kindle閱讀器代碼片段複製到您選擇的文本/源代碼編輯器的問題。這個話題在stackoverflow.com發表的一篇文章中討論過,題目爲「爲什麼Chrome將這個HTML渲染爲一個完全空白的頁面?從Node.js開始,繼節點初學者書籍[關閉]」之後。這個特別的帖子描述了確切的我遇到的同樣的問題(同樣的Kindle書,相同的代碼片段,相同的代碼症狀!)。不幸的是,在任何受訪者能夠提供確切答案之前,該帖子過早關閉,否則我會回覆該帖子。

但是,當我從Kindle書中複製代碼片段時,我深入挖掘了這個問題的根源:從Kindle應用複製文本時,它使用十六進制代碼0xA0表示空格字符,而不是0x20。十六進制代碼0xA0是非破壞性空白的擴展ASCII。那麼,當你期望複製和粘貼HTML文字字符串時,這是行不通的,就像前面提到的發佈一樣。

所以這解釋了上述提到的行爲:原始海報表明他可以通過手工重新輸入所有文本來解決問題。這是因爲手重新輸入正確使用0x20。

這有其他症狀,我最初不明白,但現在解釋:我的文本編輯器(Notepad ++)沒有正確識別我的源代碼中的保留關鍵字。同樣,這是因爲關鍵字被0xA0分開,而不是0x20。 Notepad ++中的關鍵字解析器必須標記爲0x20。

解決方案:在Kindle上粘貼文本後,在源代碼編輯器中使用正則表達式搜索功能執行搜索和替換。搜索正則表達式\ xA0並將其替換爲\ x20(或者,取決於您的編輯器,只需在替換字段中鍵入一個空格鍵字符[即Notepad ++的工作原理])。

0

我會檢查發佈商的網站。我發現他們經常會發布隨書附帶的源代碼。如果他們不這樣做,那麼這使我不太可能購買這本書。 (在某些情況下,無論複製/粘貼的數量是否可以檢索任何代碼,無論格式不佳,因此嘗試從發佈者獲取代碼是唯一方法)。

0

我發現Kindle for PC只是將所有換行轉換爲\ x20,使得查找和替換技巧無法正常工作。我的解決方案不是很好,但它的工作原理:

我下載了Calibre並開始使用它。可以這麼說,你可以通過一些谷歌搜索找到使用Calibre打開任何你需要的東西的方法。

相關問題