搜索和读入字符串
Read 和 Find 等函数在大部分情况下被用来处理外部文件中的文本或数据. 有时会感到用这些函数来处理 Mathematica 中的字符串是方便的. 这可以用函数 StringToStream 来进行,它打开一个从 Mathematica 字符串中取字符输入流,而不是从外部文件取字符的输入流.
| StringToStream["string"] | 打开一个从字符串读入的输入流 |
| Close[stream] | 关闭输入流 |
| In[1]:= |
| Out[1]= |
| In[2]:= |
| Out[2]= |
| In[3]:= |
| Out[3]= |
| In[4]:= |
| Out[4]= |
字符串输入流的做法与文件输入流相同. 任何时刻在流中有一个当前点,当使用 Read 等函数时,当前点向前移动. 当前点由StreamPosition[stream] 给出,它是从该字符串开始算起的字节数. 可以直接用SetStreamPosition[stream, n] 来设置当前点的位置.
| In[5]:= |
| Out[5]= |
| In[6]:= |
| Out[6]= |
| In[7]:= |
| Out[7]= |
| In[8]:= |
| Out[8]= |
| In[9]:= |
| Out[9]= |
| In[10]:= |
| Out[10]= |
| In[11]:= |
| Out[11]= |
现在从该字符串读时,得到的总是 EndOfFile.
| In[12]:= |
| Out[12]= |
| In[13]:= |
| Out[13]= |
在处理特别大的文本数据时,通常是将相当多的字符串读入 Mathematica,然后使用 StringToStream 以便在Mathematica 中对这些字符串进行进一步的处理. 用 StringToStream 产生了一个输入流后,就可以用前面对文件所讨论的函数读和搜索字符串.
| In[14]:= |
| Out[14]= | ![]() |
| In[15]:= |
| Out[15]= |
| In[16]:= |
| Out[16]= |
| In[17]:= |
| Out[17]= |
| In[18]:= |
| Out[18]= |
| In[19]:= |
| Out[19]= |
| In[20]:= |
| Out[20]= |

