2013-09-28 95 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