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

Baj*_*ajG 14 arrays string matlab string-split cell-array

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

我所拥有的单元阵列是<20x1>单元阵列,并且作为我使用for循环的单元访问每个元素.

for i=1:20
    line=newline{i}
end
Run Code Online (Sandbox Code Playgroud)

它向我展示了数组中的所有元素.现在因为line是一个字符串,所以我应用strsplit函数来检索字符串中的单词.

for i=1:20
   words(i,:)=strsplit(line)
end
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误信息:

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

Error in ==> chk at 15
words=strsplit(newline{i})
Run Code Online (Sandbox Code Playgroud)

谁能解释我错在哪里?任何帮助将不胜感激.提前致谢.

hor*_*ler 22

我的猜测是你在versionR2013a之前使用的是Matlab.尽管它们是通用的功能,应该有蜜蜂添加年代久远,strsplitstrjoin在这个最新版本中加入.

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

strread(line,'%s','delimiter',' ')
Run Code Online (Sandbox Code Playgroud)

但是,textscan应该更健壮:

textscan(line,'%s')
Run Code Online (Sandbox Code Playgroud)

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

regexp(line,'\s+','split')
Run Code Online (Sandbox Code Playgroud)

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

  • @UtsavSinha:您的链接是**`strread`**的文档.这个问题和答案是关于`strsplit`,一个完全不同的功能. (2认同)