Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Переменные в строке (http://www.flasher.ru/forum/showthread.php?t=208835)

inozemcev 05.09.2014 21:36

Переменные в строке
 
В питоне есть очень удобная конструкция замены специальных символов на значения:

Код AS3:

return " Takes %d units of health " % (3) // вернет "Takes 3 units of health"

Помогите написать функцию, которая могла бы принимать три аргумента и возвращать обработанную строку.

Код AS3:

parse (str:String, symbol:String, arr:Array) :String


Gerbert 05.09.2014 21:46

Вы издеваетесь чтоль? У Вас две темы в блоге и Вы не знает, как сделать метод склеивания строк?
Кто Вам тогда темы для блога писал? Или Вы считаете нормальным вести блог, когда не знаете, как сделать простое склеивание?

nubideus 05.09.2014 22:38

"123 %d 321".replace("%d", "asddsa")
// "123 asddsa 321"
profit

GBee 06.09.2014 00:06

Gerbert, что вы такой агрессивный? Может человек никогда со строками не работал и спрашивает, как лучше. К тому же задача не так проста, как кажется.

nubideus
"Привет %s, тебе сегодня исполнилось %d %s. Сегодня в %s день могут смотреть не %s"
["Юзернейм", "4", "года", "завтрашний", "только лишь все"]

Добавлено через 4 минуты
Я бы сделал как во флексе ResourceManager там замена напрямую из массива по индексу:
"Привет {0}, тебе сегодня исполнилось {1} {2}. Сегодня в {3} день могут смотреть не {4}. Не скучай, {0}!"
["Юзернейм", "4", "года", "завтрашний", "только лишь все"]

И гибче получается

Gerbert 06.09.2014 00:30

Цитата:

Gerbert, что вы такой агрессивный? Может человек никогда со строками не работал и спрашивает, как лучше. К тому же задача не так проста, как кажется.
Вы можете поверить в то, что человек-программист со стажем минимум четыре года никогда не работал со строками?

Ну а вообще, да, я извиняюсь перед ТС - простите! Это не мое дело.

GBee 06.09.2014 00:46

Цитата:

Вы можете поверить в то, что человек-программист со стажем минимум четыре года никогда не работал со строками?
Вот вы провокатор :о) Да, странно, конечно. Может лень напала?

dimarik 06.09.2014 01:13

Ну угнали у него аккаунт, спрашивают чего непонятно, чего панику разводить?

nubideus 06.09.2014 01:25

Код AS3:

var arr:Array = ["asd", 1, 2, 4];
trace("{1}, {2}, {3}, {0}, {0}".replace(/{[0-9]+}+/g, function(substr:String, i:uint, str:String):String {
        return arr[uint(substr.slice(1, -1))];
})); // 1, 2, 4, asd, asd

Код AS3:

var arr:Array = ["Юзернейм", "4", "года", "завтрашний", "только лишь все"];
var str:String = "Привет %s, тебе сегодня исполнилось %d %s. Сегодня в %s день могут смотреть не %s";
trace(str.replace(/%s|%d/g, function(substr:String, i:uint, str:String):String {
        switch(substr) {
                case "%s": return arr.shift();
                case "%d": return arr.shift();
        }
}));
// Привет Юзернейм, тебе сегодня исполнилось 4 года. Сегодня в завтрашний день могут смотреть не только лишь все

profit

inozemcev 06.09.2014 01:44

Принимаю ваш праведный гнев. Просто не хотел отвлекаться от основных тасков и подвесил функцию на сообщество. Иcходил из того, что функция будет полезна многим, поэтому и спросил.

p.s Пишу свой Heartstone с блекджеком и шлюхами. Код есть на гитхабе.

GBee 06.09.2014 02:49

Цитата:

profit
Клёво!


Часовой пояс GMT +4, время: 18:46.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.