2017-09-14 62 views

回答

4

编辑:如果你从'a'寻找数字距离,这里有一个解决方案:

julia> Int.(first.(["a","c","b","d","z"])) - Int('a') + 1 
5-element Array{Int64,1}: 
    1 
    3 
    2 
    4 
26 

它将优雅地处理unicode(这些只是后面的代码点,因此将有更大的值)和更长的字符串(通过只看第一个字符)。首都,数字和一些符号将显示为负数,因为它们的代码点在a之前。我想你在找sortperm。它给你一个索引向量,如果你用它索引回原始数组,它将按照排序顺序。

julia> sortperm(["a","c","b","d"]) 
4-element Array{Int64,1}: 
1 
3 
2 
4 
+0

我很抱歉。我最初的例子不够清楚。我需要保持信件的主要顺序。我已经更新了它。 – fsmart

+0

哦,好的。你确定你的所有信件都会在'a'中:'z'吗? –

+0

那么,我想任意的映射解决方案会有所帮助。这让我想起前段时间我在文档中看到的字典有一些东西('Dict')。 – fsmart

0

我想出了几分复杂的解决方案:

[reshape((1:26)[myletters[i] .== string.('a':'z')],1)[1] for i=1:length(myletters)] 

或者使用map

map(x -> reshape((1:26)[x .== string.('a':'z')],1)[1], myletters) 
相关问题