我有input-cell = {'ABCD', 'ABD', 'BCD'}
。如何将运算符<
放入输入单元格中的字符串?
预期输出应为:
output-cell = {'A<B<C<D', 'A<B<D', 'B<C<D'}
答案 0 :(得分:4)
在单元格数组中每个字符串的字符之间插入一个固定字符(<
):您可以使用regexeprep
,如下所示:
input_cell = {'ABCD', 'ABD', 'BCD'}; %// input cell array
c = '<'; %// character to be inserted
output_cell = regexprep(input_cell, '.(?=.)', ['$0' c]); %// output cell array
结果:
output_cell =
'A<B<C<D' 'A<B<D' 'B<C<D'
答案 1 :(得分:2)
inputcell = {'ABCD', 'ABD', 'BCD'}; %// Initial cell
outputcell = cell(size(inputcell)); %// Initialise output
for ii = 1:numel(inputcell)
tmp = inputcell{ii}; %// grab the iith cell
tmp2=[]; %// Initialise empty collector
tmp2(1:2:numel(tmp)*2)=tmp; %// Put characters on odd indices
tmp2(tmp2==0)='<'; %// Fill the even indices with <
outputcell{ii} = tmp2(1:end-1); %// Store the new string
clear tmp2 %// Clear the temporary string
end
outputcell
outputcell =
'A<B<C<D' 'A<B<D' 'B<C<D'
这使用了inputcell
中每个条目都是1xN
字符数组的事实,您可以使用索引访问该数组。只需在每个字母后附加<
并存储新字符串`。感谢@Daniel删除内循环。
答案 2 :(得分:2)
这是另一种做法。您可以使用
将所需数量(undefined == null) => true
(null == null) => true
(undefined === null) => false
(null === null) => true
(0 == null) => false
(0 == undefined) => false
(0 === null) => false
(0 === undefined) => false
(false == null) => false
(false == undefined) => false
(false === null) => false
(false === undefined) => false
(null) => false
(undefined) => false
(0) => false
(false) => false
附加到每个单元格的末尾
<
然后您可以简单地重新排列每个单元格中的字符,以将t = strcat(input_cell{n}, repmat('<', 1, length(input_cell{n})-1));
放在正确的位置
<
完全放弃
output_cell{n}(1:2:length(t)) = t(1:ceil(length(t)/2));
output_cell{n}(2:2:length(t)) = t(1+ceil(length(t)/2):length(t));
产生
input_cell = {'ABCD', 'ABD', 'BCD'};
output_cell = cell(size(input_cell));
for n = 1:length(output_cell)
t = strcat(input_cell{n}, repmat('<', 1, length(input_cell{n})-1));
output_cell{n}(1:2:length(t)) = t(1:ceil(length(t)/2));
output_cell{n}(2:2:length(t)) = t(1+ceil(length(t)/2):length(t));
end