2017-09-14 79 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) 
相關問題