如何在MATLAB中将字符串拆分为字母?

ifr*_*yed 0 string matlab split

我有一个文本,我想把它变成一个分开的字母数组.例如.:

'hello world' ? ['h','e','l','l','o',' ','w','o','r','l','d']
Run Code Online (Sandbox Code Playgroud)

谢谢.

ps MATLAB 2013a

Str*_*Bad 5

在许多方面,字符串'hello world'是一系列分隔的字母.也许你正在寻找一个单元格数组,其中每个元素都是一个标量字符

x = mat2cell('hello world', 1, ones(11, 1))

x = 

    'h'    'e'    'l'    'l'    'o'    ' '    'w'    'o'    'r'    'l'    'd'
Run Code Online (Sandbox Code Playgroud)

  • 我把它改成'a ='你好世界'; x = mat2cell(string,1,ones(numel(a),1));`使其更加健壮.和@Dan"为什么?" - >有时一个最小的例子毫无意义,但为什么不呢?想象一下,字符串不包含字母,而是包含数字或二进制数字或标志或其他内容.所以你可能需要它在单元格而不是字符串. (2认同)

Rod*_*uis 5

你原来的问题没有多大意义; 字符串已经是一个字符数组.

建立在这里的其他人的假设(你想要一个单独的字符的单元格数组),有一个稍短的选择:

>> num2cell('hello world')
ans = 
   'h'    'e'    'l'    'l'    'o'    ' '    'w'    'o'    'r'    'l'    'd'
Run Code Online (Sandbox Code Playgroud)

其他方式:

>> regexp('hello world', '.', 'match')
ans = 
   'h'    'e'    'l'    'l'    'o'    ' '    'w'    'o'    'r'    'l'    'd'
Run Code Online (Sandbox Code Playgroud)

你也可以看看strsplit(在R2013a左右推出)

num2cell保留输入参数的类,如以下相关部分所示num2cell:

c = cell(size(a));
for i=1:numel(a)
    c{i} = a(i);
end 
Run Code Online (Sandbox Code Playgroud)

基础知识:在引擎盖下,字符串(==数组chars)本质上是一个8位整数数组,以不同的方式解释.键入'hello world'+0以查看我的意思; 你会得到整数数组中各个字符的UTF-8表值(好吧,doubles,但是很好).