搜索和读入字符串

ReadFind 等函数在大部分情况下被用来处理外部文件中的文本或数据. 有时会感到用这些函数来处理 Wolfram 语言中的字符串是方便的. 这可以用函数 StringToStream 来进行,它打开一个从 Wolfram 语言字符串中取字符输入流,而不是从外部文件取字符的输入流.

StringToStream["string"]打开一个从字符串读入的输入流
Close[stream]关闭输入流

按输入流处理字符串.

打开一个从字符串读入的输入流.
In[1]:=
Click for copyable input
Out[1]=
这里从该字符串读第一个.
In[2]:=
Click for copyable input
Out[2]=
读这个字符串其余的词.
In[3]:=
Click for copyable input
Out[3]=
关闭这个输入流.
In[4]:=
Click for copyable input
Out[4]=

字符串输入流的做法与文件输入流相同. 任何时刻在流中有一个当前点,当使用 Read 等函数时,当前点向前移动. 当前点由StreamPosition[stream] 给出,它是从该字符串开始算起的字节数. 可以直接用SetStreamPosition[stream,n] 来设置当前点的位置.

这是一个与字符串有关的输入流.
In[5]:=
Click for copyable input
Out[5]=
从字符串开始算起,当前位置是第0字节.
In[6]:=
Click for copyable input
Out[6]=
这里从该流读入一个数字.
In[7]:=
Click for copyable input
Out[7]=
从字符串开始算起,当前位置是第3字节.
In[8]:=
Click for copyable input
Out[8]=
这里将当前位置设置为1.
In[9]:=
Click for copyable input
Out[9]=
现在从该字符串读一个数时,得到的是 ,它是 的一部分.
In[10]:=
Click for copyable input
Out[10]=
这里将当前点设置到字符串末尾.
In[11]:=
Click for copyable input
Out[11]=
现在从该字符串读时,得到的总是 EndOfFile.
In[12]:=
Click for copyable input
Out[12]=
关闭这个流.
In[13]:=
Click for copyable input
Out[13]=

在处理特别大的文本数据时,通常是将相当多的字符串读入 Wolfram 系统,然后使用 StringToStream 以便在Wolfram 系统中对这些字符串进行进一步的处理. 用 StringToStream 产生了一个输入流后,就可以用前面对文件所讨论的函数读和搜索字符串.

的全部内容放到一个字符串中.
In[14]:=
Click for copyable input
Out[14]=
对该字符串打开一个输入流.
In[15]:=
Click for copyable input
Out[15]=
给出该字符串中包含 的文本行.
In[16]:=
Click for copyable input
Out[16]=
这里将当前点重新设置到字符串开头.
In[17]:=
Click for copyable input
Out[17]=
这里找出该字符串中第一个 ,并将当前点恰好放在它之后.
In[18]:=
Click for copyable input
Out[18]=
这里读入 之后的一个.
In[19]:=
Click for copyable input
Out[19]=
关闭这个输入流.
In[20]:=
Click for copyable input
Out[20]=