3

J,在读入文本文件后,如何摆脱那些CRor LForCRLF然后我可以使用".而无需得到spelling error

4

2 回答 2

3

使用freads动词将强制行尾为LF. 如果您使用的是 J6 或更早版本,则需要先加载文件脚本( load 'files'),否则freads可作为标准库的一部分使用。然后正如 Eelvex 建议的那样,cut ;.更具体地说;._2可用于使用字符串中的最后一个字符(在本例LF中为 )作为分隔符来划分文件的行:

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

最好使用Numbers (dyadic ".) 将文字转换为数字而不是Do (monadic ".)。这避免了文件中“执行”代码的潜在安全问题,并将正确转换更多变体,比较以下:

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

您可能会更快地发现以下内容:

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

Numbers一次作用于整个数组,而不是单独在每一行上运行。

于 2013-09-28T21:49:03.457 回答
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
于 2013-09-28T00:45:00.097 回答