我有input-cell = {'ABCD', 'ABD', 'BCD'}
。如何將運算符<
放入輸入單元的字符串中?在字符串數組中的所有字符串的每個字符之間插入一個字符
預期輸出應該是:
output-cell = {'A<B<C<D', 'A<B<D', 'B<C<D'}
我有input-cell = {'ABCD', 'ABD', 'BCD'}
。如何將運算符<
放入輸入單元的字符串中?在字符串數組中的所有字符串的每個字符之間插入一個字符
預期輸出應該是:
output-cell = {'A<B<C<D', 'A<B<D', 'B<C<D'}
要插入在單元陣列的每個字符串的字符之間的固定字符(<
):可以使用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'
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
字符數組,您可以訪問使用索引。只需在每個字母后附加<
並存儲新字符串`。感謝@丹尼爾去除內部循環。
這是另一種方式。您可以附加,你需要每個單元的一端與
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
產生
>> output_cell
output_cell =
'A<B<C<D' 'A<B<D' 'B<C<D'
該死的,我正在研究一個正則表達式解決方案,但是你的工具速度更快!這是要走的路。 – thewaywewalk
@thewaywewalk謝謝! –