使用C#分隔字符串的命令非常简单,比如有这样的字符串:
string str="aa ihnn dtaa know wvii mmaa kelnsl wlkne sl sdl wel wlnel"
如果用C#分隔成数组,只需要一句话即可:
string[] sArray=str.split(' ');
如果考虑到这中间的分隔符,并不一定是一个空格,那么可能会产生空的数据出来,这样就需要去除空值,可以用下面的代码:
string[] sArray=str.split(new char[] {' ',','}, StringSplitOptions.RemoveEmptyEntries);
但是Praat没有提供类似的函数,操作起来并不方便,首先需要考虑以空格或者其它字符隔开,而且一次性只能使用一种分隔符。而且最后考虑空值的时候,也需要再循环一次,使用一个新的变量,将非空的值保存起来。
代码如下:
# Praat script: stringToArrayWithSplitChars.praat
# Author: Pengfei Shao <feipengshao@163.com>
# Company: iflytek
# Version: 2014/6/24 11:16:55
# Praat Version: 5.3.78
# Purpose:将字符串按同样的分隔符,分隔成数组存放
#
# Requires: 字符串,以通常的分隔符分隔
#
# Version History:
# 2014/6/24: Praat script is created.
##################################################
str$="aa ihnn dtaa know wvii mmaa kelnsl wlkne sl sdl wel wlnel"
splitStr$=" "
i=1
while index(str$,splitStr$)<>0
indexOfLeftSpace=index(str$,splitStr$)
newArrayStr$[i]=mid$(str$,1,indexOfLeftSpace-1)
len=length(str$)
str$=right$(str$,len-indexOfLeftSpace)
i=i+1
endwhile
i=i-1
newArrayStr$[i]=str$
# 去空值
j=1
for m from 1 to i
if newArrayStr$[m]<>""
finalArrayList$[j]=newArrayStr$[m]
j=j+1
endif
endfor