我正在尝试在smalltalk(visualworks)中读取和处理csv文件的内容,但是似乎很难将字符串拆分成数组。下面是我已经能够开始工作的代码。我所缺少的是将myLine变量(它是一个逗号分隔的字符串)的内容拆分为字符串数组以添加到TwoDList的内容。请帮助您提供有关如何解决此问题的任何信息。谢谢

SpreadsheetReadCSV:  inFilename
    |inStream myLine rcnt|
      rcnt := 0.
       " scan thru the text lines, using a traditional i/o loop "
       inStream :=  (inFilename asFilename) readStream  .
       [ inStream atEnd ] whileFalse: [
             rcnt := rcnt + 1.
            myLine := inStream upTo: Character cr.
                "Process the commadelimited string here"
       ].
      inStream inspect.
      inStream close.
   ^myLine.

最佳答案

1)您也可以将字符串转换为流,因此可以使用与将文件解析为行相同的技术:

myLine := (inStream upTo: Character cr) readStream.
[ myLine atEnd ] whileFalse: [ | myCell |
  myCell := myLine upTo: $,.
  "Do whatever with the cell" ]

2)您可以使用tokensBasedOn将字符串拆分为多个部分:
myLine tokensBasedOn: $,

关于smalltalk - 在Smalltalk中,如何读取和处理CSV文件的内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9668506/

10-11 21:45