string - 如何根据顺序对字符串进行编号

标签 string matlab sorting cell-array

我在 matlab 中有一个字符串元胞数组。有些字符串可能相等。我想按字典顺序对字符串进行编号。

例如,如果我有 {'abc','aty','utf8','sport','utf8','abc'},我想在输出中得到数组 [1, 2, 4, 3, 4, 1]

你能给我一些方法吗?

最佳答案

重复的字符串使 sort 变得棘手,但在这种情况下,您可以依赖 unique 的事实适用于字符串元胞数组,对其输出进行排序,并可选择返回原始输入中那些已排序元素的索引:

>> a = {'abc' 'aty' 'utf8' 'sport' 'utf8' 'abc'}
a =
{
  [1,1] = abc
  [1,2] = aty
  [1,3] = utf8
  [1,4] = sport
  [1,5] = utf8
  [1,6] = abc
}

>> [b, ~, index] = unique(a)
b =
{
  [1,1] = abc
  [1,2] = aty
  [1,3] = sport
  [1,4] = utf8
}
index =

   1   2   4   3   4   1

或者您显然可以只使用 [~, ~, index] = unique(a); 如果您真的想要索引。

关于string - 如何根据顺序对字符串进行编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22285198/

相关文章:

在字符串列表中的相同位置查找字符的算法?

php - 从字符串中删除所有非数字字符; [^0-9] 与预期不匹配

matlab - 通过颜色渐变修补圆圈

php - 基于另一个数组的键对数组进行排序?

javascript - 这个 QuickSort 实现有什么问题?

Python3 & Tkinter,list.sort 由 StringVar 组成的对象列表

java - 如何将 "string"转换为 "*s*t*r*i*n*g*"

C++从多行字符串中删除新行

python - 类似于 MATLAB 的 python 切片

matlab - Symbolic Toolbox Matlab 中的差分方程