# Sorting names. Surprise

**URL:** https://discourse.julialang.org/t/sorting-names-surprise/50198
**Category:** General Usage
**Created:** [November 15, 2020, 7:20pm UTC](https://discourse.julialang.org/t/sorting-names-surprise/50198 "2020-11-15T19:20:16Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)
#### Post date: [November 15, 2020, 7:20pm UTC](https://discourse.julialang.org/t/sorting-names-surprise/50198/1 "2020-11-15T19:20:16Z")

</div>

What I’m I missing here?  
This is wrong.

```julia
julia> sort(["Vila Flor", "Vila da Flor"])
2-element Vector{String}:
 "Vila Flor"
 "Vila da Flor"

```

correct output should be

```julia
 "Vila da Flor"
 "Vila Flor"

```

---

<div class="post-metadata">

### Author: ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)
#### Post date: [November 15, 2020, 7:22pm UTC](https://discourse.julialang.org/t/sorting-names-surprise/50198/2 "2020-11-15T19:22:05Z")

</div>

What makes you say this is wrong?

---

<div class="post-metadata">

### Author: ![simeonschaub](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simeonschaub/32/216566_2.png) [@simeonschaub](https://discourse.julialang.org/u/simeonschaub)
#### Post date: [November 15, 2020, 7:22pm UTC](https://discourse.julialang.org/t/sorting-names-surprise/50198/3 "2020-11-15T19:22:13Z")

</div>

Capitalization does matter here, since:

```julia
julia> 'F' < 'd'
true

```

---

<div class="post-metadata">

### Author: ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)
#### Post date: [November 15, 2020, 7:24pm UTC](https://discourse.julialang.org/t/sorting-names-surprise/50198/4 "2020-11-15T19:24:03Z")

</div>

Note, you can use the `by` keyword to give your own custom preprocessing before each argument is compared.

---

<div class="post-metadata">

### Author: ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)
#### Post date: [November 15, 2020, 7:29pm UTC](https://discourse.julialang.org/t/sorting-names-surprise/50198/5 "2020-11-15T19:29:25Z")

</div>

Thanks, that was it. Had tried with Windows name sorting that gave me what I was expecting but possibly because on Win names are case insensitive.

```julia
julia> sort(["Vila Flor", "Vila da Flor"], by=uppercase)
2-element Vector{String}:
 "Vila da Flor"
 "Vila Flor"

```

---

<div class="post-metadata">

### Author: ![yha](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yha/32/3502_2.png) [@yha](https://discourse.julialang.org/u/yha)
#### Post date: [November 15, 2020, 7:38pm UTC](https://discourse.julialang.org/t/sorting-names-surprise/50198/6 "2020-11-15T19:38:02Z")

</div>

Note that simply doing converting to uppercase might possibly not sort correctly outside of ASCII (correct uppercasing is itself language-dependent). If you need proper locale-dependent sorting (“collation”), I think you can find it in the `StrICU` package.

---

<div class="post-metadata">

### Author: ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)
#### Post date: [November 15, 2020, 7:43pm UTC](https://discourse.julialang.org/t/sorting-names-surprise/50198/7 "2020-11-15T19:43:42Z")

</div>

Right, but these are Portuguese names so all _inside_ ASCII. And I checked that now the sorting does what is expected when comparing the names to those of another file that are previously sorted.

---

<div class="post-metadata">

### Author: ![lbilli](https://avatars.discourse-cdn.com/v4/letter/l/59ef9b/32.png) [@lbilli](https://discourse.julialang.org/u/lbilli)
#### Post date: [November 15, 2020, 10:09pm UTC](https://discourse.julialang.org/t/sorting-names-surprise/50198/8 "2020-11-15T22:09:55Z")

</div>

It might be worth keeping in mind that:

```julia
julia> sort(["a", "ã", "â", "c", "ç", "e", "ê", "o", "õ", "z"], by=uppercase)
10-element Array{String,1}:
 "a"
 "c"
 "e"
 "o"
 "z"
 "â"
 "ã"
 "ç"
 "ê"
 "õ"

```
