@sinister1827

Как сортировать слова в строке?

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

Уточнение: Цифры могут быть от 1 до 9. 1 будет первым словом (не 0). Если лента пуста - вернуть пустую ленту. Слова в входной ленте будут содержать только валидные значения. Пример: sortString(‘g5et ski3lls on6 use1 your2 to4 7top’) Результат: use1 your2 ski3lls to4 g5et on6 7top.

Вот что я пробовал:
sortString = function(Str){
Str = Str.split(",");
var arr = ["1","2","3","4","5","6","7","8","9"];
for(var n = 0; n < Str.length; n++){
for (var i = 0; i < arr.length; i++) {
if(Str.includes(arr[i])){
Str[n] = Str[i+1];
}
}

}
Str = Str.join();
console.log(Str);
}

sortString("gonna2 Yo1u me4 tu3ch");
P.S: Недавно начал учить язык. Не судите строго))
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
locky_yotun
@locky_yotun
Я видел некоторый джаваскрипт
var sortString = (str) => {
  var arr = str.split(' ');
  var arrToSort = arr.map(word => ({ word, num: word.replace(/[^\d]/g, '') }));
  var sortedArr = arrToSort.sort((a,b) => a.num - b.num);
  return sortedArr.map(el => el.word).join(' ');
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Shimmu
<?php
function sortString($str) {
if ($str != null) {
$arr = explode(" ", $str);
$arr2 = array();
foreach ($arr as $key => $value) {
preg_match('/[0-9]/', $value, $matches);
$arr2[$matches[0]] = $value;
}

ksort($arr2);
$newStr = implode(" ", $arr2);
return $newStr;
} else {
return "";
}
}

$str = "g5et ski3lls on6 use1 your2 to4 7top";
$res = sortString($str);
echo $res;
?>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
18 авг. 2018, в 18:35
1000 руб./за проект
18 авг. 2018, в 17:54
6000 руб./за проект
18 авг. 2018, в 18:44
350 руб./за проект