2013-09-28 101 views
3

J,在一個文本文件中讀取後CRLF後,如何擺脫這些CRLFCRLF的,然後我可以使用".沒有得到spelling error刪除CR或LF或閱讀文件

回答

3

使用freads動詞將強制行結尾是LF。如果您使用的是J6或更早版本,則需要首先加載files scriptload 'files'),否則freads作爲標準庫的一部分提供。然後如Eelvex表明cut;.更具體;._2可以用來劃分使用的最後一個字符的字符串中的文件的行(在此情況下LF)作爲分隔符:

_99&".;._2 freads 'myfile.txt' 

這是更好地使用Numbers(二進".),以文字轉換爲數值,而不是Do(一元".)。這樣就避免了文件中的「執行」代碼潛在的安全問題,將正確地轉換更多的變化,比較如下:

". '45 -34'  NB. monadic ". 
11 
    _99 ". '45 -34' NB. dyadic ". 
45 _34 

您可能會發現下面的更快:

_99 ". ];._2 freads 'myfile.txt' 

Numbers是作用整個數組一次,而不是分別在每行上運行。

+2

興趣點:二進形式'的可freads'削減文件到你行(使用'; .'下蓋)。例如,'「b」 freads「filename.ext''使每一行成自己的」 b'ox(好不規則長度線)和'「M」 freads「filename.ext''請問']; ._ 2'的事情,即發出」數據的m'atrix(這是很好的用於常規數據,等的OP的表數字) –

+0

但不知何故,當我是這樣做的'/:。〜(_99」]; ._ 2 freads 'myfile.txt的')',我仍然可以輸出'4 2 3'。請讓我知道爲什麼? – Dan

+1

不知道你的文件的內容是什麼,很難知道輸出應該是什麼或者它爲什麼不是你所期望的。您是否能夠顯示您正在嘗試閱讀的文件的一小部分? – Tikkanz

1

cut;.使用的最後一個項目(FRET |2) - 這應該是你的CR/LF - 同時刪除該內容(FRET _2)。

a =: 0 : 0  NB. a =: (1!:1)<filename 
1 2 3 4 
5 6 7 8 
) 

*: ".;._2 a 
1 4 9 16 
25 36 49 64 
+0

但不知何故,當我是這樣做的/:〜(」 ._ 2‘myfile.txt的’),我仍然可以輸出4 2 3。請讓我知道爲什麼 – Dan