AS3 сортирует строки по алфавиту

#arrays #string #actionscript-3 #sorting

#массивы #строка #actionscript-3 #сортировка

Вопрос:

Я работаю над программой, в которой строка содержит несколько слов с разрывами строк между ними:

 Bob
Mohammed
Alfred
Moses
Tom
etc
  

То, что я пытаюсь сделать, это отсортировать ее в алфавитном порядке как таковую:

 Alfred
Bob
Mohammed
Moses
Tom
...
  

Насколько я знаю, это можно сделать только в массивах, но возможно ли сортировать элементы внутри строки?

Ответ №1:

Если для чего-то нет встроенной функции, просто создайте для нее свою собственную функцию. Это очень важно для программирования в целом.

Помните, что такое строка: это массив символов. В ActionScript 3.0 это не совсем верно в рамках фактического синтаксиса языка, но вы можете обойти это довольно легко. String.charAt() возвращает вам символ с заданным индексом, и у вас есть целый ряд операций, чтобы фактически изменить порядок или количество символов в строке.

При этом, поскольку вы просто пытаетесь отсортировать отдельные слова, и поскольку они уже являются строчными, вы можете разделить символ новой строки, "n" , который создаст массив. Затем вы сортируете этот массив. Я не помню, будет ли массив в AS3 изначально сортировать строки в алфавитном порядке — возможно, вы захотите это сделать в Google, но я думаю, что это так; если нет, то это просто восходит к тому, что говорилось в первом абзаце. Наконец, вы присоединяете массив к тому же символу.

Итак:

 var arr:Array = nameString.split("n");

// sort the different elements within arr here; each one is one name

nameString = arr.join("n");
  

Комментарии:

1. О, не знал, что эти функции существуют, я довольно новичок в AS3, я знаю только основы. Я буду помнить о первом абзаце всякий раз, когда я программирую. Большое спасибо за вашу помощь ^^

Ответ №2:

Вы можете создать массив из строки, разделив его на символ новой строки (n), затем отсортировав его и преобразовав обратно в строку, соединив элементы с тем же символом новой строки:

 var str:String = "BobnMohammednAlfrednMosesnTom";
var sortedString = str.split("n").sort().join("n"));