MATLAB技术问题:如何删除字符数组中最后一个空格后的所有字符?
解决MATLAB中删除字符数组最后一个空格后所有字符的问题
嘿,这问题我之前处理过类似的,给你一个简洁高效的解决方案,正好匹配你的需求!
首先,你的输入是一个MATLAB单元格数组:
ch = {'Test1 Index'; 'Test 2 Index'; 'Test 3 4 Curncy'};
我们需要批量处理每个单元格里的字符串,删掉最后一个空格之后的所有内容,得到你想要的输出。
核心实现代码
直接用cellfun配合匿名函数就能搞定,一行代码解决批量处理的问题:
ch_processed = cellfun(@(s) s(1:find(isspace(s), 1, 'last')-1), ch, 'UniformOutput', false);
代码解释
cellfun:专门用来对单元格数组的每个元素执行相同操作的函数,省去了写循环的麻烦isspace(s):检测字符串s里的所有空格,返回一个逻辑数组,空格位置为truefind(isspace(s), 1, 'last'):从后往前找第一个空格的索引(也就是最后一个空格的位置)s(1:index-1):截取字符串从开头到最后一个空格前的部分,完美去掉后面的内容
运行这段代码后,你会得到期望的输出:
disp(ch_processed); % 结果: % {'Test1' } % {'Test 2' } % {'Test 3 4' }
健壮性优化(可选)
如果你的单元格数组里可能存在没有空格的字符串,上面的代码会报错。可以加个判断,让代码更健壮:
ch_processed = cellfun(@(s) ... any(isspace(s)) ? s(1:find(isspace(s), 1, 'last')-1) : s, ... ch, 'UniformOutput', false);
这样如果某个字符串没有空格,就直接返回原字符串,不会出错。
内容的提问来源于stack exchange,提问作者Andi
相关产品推荐
相关产品推荐

