2.11.10 搜索和读入字符串Read 和 Find 等函数在大部分情况下被用来处理外部文件中的文本或数据. 有时会感到用这些函数来处理 Mathematica 中的字符串是方便的. 这可以 用函数 StringToStream 来进行,它打开一个从 Mathematica 字符串中取字符输入流, 而不是从外部文件取字符的输入流. 按输入流处理字符串 打开一个从字符串读入的输入流
Out[1]= |  |
这里从该字符串读第一个词
Out[2]= |  |
读这个字符串其余的词
Out[3]= |  |
关闭这个输入流
Out[4]= |  |
字符串输入流的做法与文件输入流相同. 任何时刻在流中有一个当前点, 当使用 Read 等函数时,当前点向前移动. 当前点由 StreamPosition[stream] 给出, 它是从该字符串开始算起的字节数. 可以直接用 SetStreamPosition[stream, n] 来设置当前点的位置. 这是一个与字符串有关的输入流
Out[5]= |  |
从字符串开始算起,当前位置是第 0 字节
Out[6]= |  |
这里从该流读入一个数字
Out[7]= |  |
从字符串开始算起,当前位置是第 3 字节
Out[8]= |  |
这里将当前位置设置为 1
Out[9]= |  |
现在从该字符串读一个数时,得到的是 23,它是 123 的一部分
Out[10]= |  |
这里将当前点设置到字符串末尾
Out[11]= |  |
现在从该字符串读时,得到的总是 EndOfFile
Out[12]= |  |
关闭这个流
Out[13]= |  |
在处理特别大的文本数据时,通常是将相当多的字符串读入 Mathematica,然后使用 StringToStream 以便在 Mathematica 中对这些字符串进行进一步的处理. 用 StringToStream 产生了一个输入流后,就可以用前面对文件所讨论的函数读和搜索 字符串. 将 textfile 的全部内容放到一个字符串中
Out[14]= |  |
对该字符串打开一个输入流
Out[15]= |  |
给出该字符串中包含 is 的文本行
Out[16]= |  |
这里将当前点重新设置到字符串开头
Out[17]= |  |
这里找出该字符串中第一个 the,并将当前点恰好放在它之后
Out[18]= |  |
这里读入 the 之后的一个词
Out[19]= |  |
关闭这个输入流
Out[20]= |  |
|