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

kgk*_*kgk 4 string matlab cell-array

我有一个像这样的单元格数组:

Input = {'CEEEGH';'CCEEG';'ABCDEFF';'BCFGG';'BCDEEG';'BEFFH';'AACEGH'}
Run Code Online (Sandbox Code Playgroud)

如何删除所有重复的字符,并在输入中的每个字符串中只保留1个字符?预期的输出应该是这样的:

Output = {'CEGH';'CEG';'ABCDEF';'BCFG';'BCDEG';'BEFH';'ACEGH'}
Run Code Online (Sandbox Code Playgroud)

bla*_*bla 9

使用 :

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



ans = 

'CEGH'
'CEG'
'ABCDEF'
'BCFG'
'BCDEG'
'BEFH'
'ACEGH'
Run Code Online (Sandbox Code Playgroud)

编辑:

如果字母未排序,为了节省排序,如@thewaywewalk评论,您可以使用:

cellfun(@(x) unique(x,'stable'),input,'UniformOutput',0)
Run Code Online (Sandbox Code Playgroud)

  • 最好的方法,但我可以选择`unique`的`'stable'`属性来保持顺序,以防字符串的字母没有排序. (3认同)
  • @excaza只是使用`cellfun(@(x)unique(x,'stable'),input,'UniformOutput',0)` - 直接在句柄中是不可能的,这是对的. (2认同)