在单元格数组中删除重复的字符串字符

4

I have a cell array like this :

Input = {'CEEEGH';'CCEEG';'ABCDEFF';'BCFGG';'BCDEEG';'BEFFH';'AACEGH'}

我该如何删除输入中所有重复的字符,仅保留每个字符串中的一个字符?期望的输出应该像这样:
Output = {'CEGH';'CEG';'ABCDEF';'BCFG';'BCDEG';'BEFH';'ACEGH'}
1个回答

9

使用:

cellfun(@unique,input,'UniformOutput',0)



ans = 

'CEGH'
'CEG'
'ABCDEF'
'BCFG'
'BCDEG'
'BEFH'
'ACEGH'

编辑:

如@thewaywewalk所评论的一样,如果字母没有排序,为了保持顺序,您可以使用以下方法:

cellfun(@(x) unique(x,'stable'),input,'UniformOutput',0)

抢先一步,我也想到了完全相同的事情。 - hbaderts
3
最佳方法是这样的,但我建议考虑使用 unique'stable' 属性,以保持字符串字母未排序的情况下的顺序。 - Robert Seifert
1
@thewaywewalk 你如何为函数句柄指定名称-值对?我以前从未见过这样做,而且函数句柄文档非常简略。 - sco1
2
@excaza 只需使用 cellfun(@(x) unique(x,'stable'),input,'UniformOutput',0) - 直接在句柄中使用是不可能的,没错。 - Robert Seifert
1
@thewaywewalk 真遗憾,我本来还期望有些新的语法糖出现呢 :) - sco1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接