2016-02-12 76 views
1

我有一个单元阵列,其元素为​​,"def","ghi"操作单元阵列元素

谁能告诉我怎么把它转换成"aa bb cc","dd ee ff","gg hh ii"?我在​​等结束。

+2

你有什么企图? –

+2

另外,为了澄清,是你的细胞元素'''“abc”''或''abc''?换句话说,它们是否包含本身不用于创建Matlab字符串(char数组)的直的双引号符号''“'? – horchler

回答

1
>> t = {'abc','def'} 
>> tnew = cellfun(@(x)reshape([x' x' repmat(' ',numel(x),1)]',1,[]),t,'UniformOutput',false) 

tnew = 

'aa bb cc ' 'dd ee ff ' 

每个字符串后面都会有一个尾随空白,但是您可以使用strtrim将其删除。

>> strtrim(tnew) 

ans = 

'aa bb cc' 'dd ee ff' 
4

如何使用正则表达式?

x = {'abc', 'def', 'ghi'}; %// cell array of strings 
y = regexprep(x, '.', '$0$0 '); %// duplicate each character and insert a blank space 
y = regexprep(y, ' $', ''); %// remove last space 

这给

y = 
    'aa bb cc' 'dd ee ff' 'gg hh ii' 
+0

我意识到我们不是在玩高尔夫代码(不幸的是?:)),但它更短使用'deblank'而不是最后一行'deblank'也快几个数量级 –

+1

@transversalitycondition好主意!无论如何,另一个问题就是这样,所以我会离开它。 –