Просмотр полной версии : Вернуть пробел
Appleman
30.10.2017, 22:09
Камрады, прошу простить за тупой вопрос, но я даже не могу сообразить, как у Гугла такое спрашивать :)
Нужна элементарная вещь - возможность вставлять в генерируемый текст пробелы, точки и запятые. Но вот незадача: делаю в классе метод
public function space () : String
{
return " ";
}
Получается фигня. То же самое с точками, запятыми и т.п. Я помню, были специальные обозначения для подобных символов, которые можно использовать для преобразования. Но как они правильно называются, и где искать, забыл. Подскажите, плиз.
ZergMaster
30.10.2017, 22:22
Они называются спецсимволы (http://htmlbook.ru/samhtml/tekst/spetssimvoly) =) Но скорее всего, для того, чтобы они отображались в текстовом поле, нежно присваивать строку тексту не по myText.text = 'string', а myText.htmlText = 'string';
интересно, а для чего такая задача - вернуть пробел?)
Не верю.
Может кто-то использует embedFonts и забыл заэмбдить знаки препинания?
ZergMaster, навряд ли в той таблице СПЕЦсимволов найдутся пробел, точка и запятая ;)
Appleman
30.10.2017, 23:56
Они называются спецсимволы (http://htmlbook.ru/samhtml/tekst/spetssimvoly) =)
О! Вот оно, то слово, которого мне не хватало. Спасибо большое.
интересно, а для чего такая задача - вернуть пробел?)
Очень просто. Если текст генерируется из слов, которые подбираются по id, то разные слова могут стоять на разных местах в предложении или в сообщении. Поэтому все хранятся с маленькой буквы без пробелов перед или после. На мой вкус удобно сделать "предустановденные" варианты типа " ", ". ", ", " и т.п. и держать их прямо в классе со всякой словесной мелочью.
caseyryan
31.10.2017, 06:23
Не совсем понятна задача. А как определяется место в которое нужно установить пробел, а в какое точку или запятую? Можно по-подробнее? Желательно пример текста который должен получиться вместе с примером того, как хранятся нужные для него слова
Appleman
31.10.2017, 10:05
Во-первых, всем сорри за ложную тревогу. Сам дурак, к своей функции space без скобочек () обращался, вот и получал всякую хрень. А так работает прекрасно.
Не совсем понятна задача. А как определяется место в которое нужно установить пробел, а в какое точку или запятую? Можно по-подробнее? Желательно пример текста который должен получиться вместе с примером того, как хранятся нужные для него слова
Ну например, получает игрок бонус к характеристике (интеллект +1). Слово "интеллект" - есть в XML с нужным языком по id свойства, +1 тоже понятно. А пробела не хватает. Как-то так. Может, я перегибаю, я просто подсмотрел такую вещь как file.separator, который по факту "\" ставит и решил сделать примерно также.
ZergMaster
31.10.2017, 10:22
навряд ли в той таблице СПЕЦсимволов найдутся пробел, точка и запятая ;)
Wolsh да, невнимательно посмотрел). Вот тут (https://pixelplus.ru/studio/stat/html-simvoly-tablitsa-spetssimvolov-v-formate-html/) оно =). Но проблемы больше нет, так что все ОК.
Ну например, получает игрок бонус к характеристике (интеллект +1). Слово "интеллект" - есть в XML с нужным языком по id свойства, +1 тоже понятно. А пробела не хватает. Как-то так. Может, я перегибаю, я просто подсмотрел такую вещь как file.separator, который по факту "\" ставит и решил сделать примерно также.
Вроде для такого используют такую тему "Интеллект +%VALUE%" И потом реплейсят нужным значением. Это например. Ведь могут быть сложные предложения, собирать их из слов не очень удобно. Типа "Гном помер и оставил вам %VALUE% и %VALUE%. И + %VALUE% к гномонетолерантности"
Добавлено через 1 минуту
Ну и проще потом изменять если что, чем в коде прописывать. "интеллект +1" а надо сделать "интеллект +1 единица". Пример за уши притянут, но идея вроде ясна?
Appleman
31.10.2017, 14:02
GBee, спасибо. Намотал на ус!
ZergMaster
31.10.2017, 16:06
GBee
а что, правда, можно так и записывать?
textField.text = "Интеллект +%VALUE%"
или вы имели в виду
textField.text = "Интеллект +"+VALUE;
Appleman
31.10.2017, 17:11
Скажите ещё, пожалуйста, а как перевод на новую строку сделать? Т.е. передать аналог нажатия "Enter".
caseyryan
31.10.2017, 19:45
GBee
а что, правда, можно так и записывать?
textField.text = "Интеллект +%VALUE%"
или вы имели в виду
textField.text = "Интеллект +"+VALUE;
Вариант GBee более правильный, чем конкатенация. Объясню почему.
1) При хранении разных локализаций, из-за разного порядка слов в разных языках, нужное значение может занимать разные позиции в предложении
2) Можно без проблем подставить сразу несколько значений
3) При таком подходе не нужно присваивать текстовому полю сразу текст. Можно получать значение текста динамически, с уже подставленными данными
У меня это выглядит примерно так:
var expIncreaseValue:Number = 70;
_experience.text = i18n.t("experienceIncrease").replace("%VALUE%", expIncreaseValue); // Текст на выходе будет уже с подставленным значением "Твой опыт увеличился на 70 единиц"
А в локализации, соответственно, он выглядит так:
experienceIncrease: "Твой опыт увеличился на %VALUE% единиц"
я просто подсмотрел такую вещь как file.separator
File.separator нужен совсем для другого. В винде используются обратные слеши, а в линуксе или мак ос передние. Так вот он подставляет нужные вид слеша в зависимости от операционки. С пробелами или запятыми это как-то не вяжется
ZergMaster
31.10.2017, 20:45
caseyryan
Воистину: век живи - век учись. Не знал такую тему совершенно.
А, я понял в чем смысл, да! Да, классная штука. То есть это позволяет нам хранить в локализации уже сформированные строки на разных языках с внедренными паттернами, которые мы просто заменяем на переменные. Замечательно, спасибо, да. =)
caseyryan
01.11.2017, 06:09
Замечательно, спасибо, да. =)
Всегда пожалуйста ;)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.