strsplit:输入类型'char'的未定义函数

时间:2013-09-07 13:47:18

标签: arrays string matlab cell-array string-split

我有< 20x1>单元格数组,每个单元格都以字符串的形式存储一些数据(因为它在我看来!!!)。我想以单个字符串的形式访问单元格的每个元素,并且以单词形式分割。

我具有的单元阵列是< 20x1>单元格数组以及作为单元格访问每个元素我正在使用for循环。

for i=1:20
    line=newline{i}
end

它显示了数组中的所有元素。既然line是一个字符串,我应用strsplit函数来检索字符串中的单词。

for i=1:20
   words(i,:)=strsplit(line)
end

这给了我一条错误信息:

??? Undefined function or method 'strsplit' for input
arguments of type 'char'.

Error in ==> chk at 15
words=strsplit(newline{i})
谁能解释我错在哪里?任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:22)

我的猜测是你在R2013a之前使用的是version Matlab。尽管它们是通用函数并且应该在很久以前添加,但strsplitstrjoin仅为added in this most recent version

如果您想要做的就是将字符串拆分为单词,有几种方法可以解决无法访问strsplit的问题。如果你的所有空格都是简单的空格,你可以像这样使用strread

strread(line,'%s','delimiter',' ')

但是,textscan应该更强大:

textscan(line,'%s')

使用regexp也应该很健壮,但可能会更慢:

regexp(line,'\s+','split')

所有这些都将输出作为字符串(您的单词)的单元格数组返回,就像strsplit一样。 textscan的输出相对于其他输出进行了转换。