[ID CS3 и ранее] Как правильно перевести в верхний регистр?

  • Автор темы Автор темы _MBK_
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 703
Реакции
11 004
Есть текстовая строка, надо в ней перевести все символы, стоящие после "-" в верхний регистр.
Альтернативное решение найдено такое:
Код:
function replacer(str, p1,  offset, s)
{
   return "-"+p1.toUpperCase();
}
alert(str.replace(/-(\w)/g,  replacer));
Вопрос: как это сделать прямым способом? Почему не работает модификатор \u или как его правильно приготовить?
 
\u только при поиске работает.
 
Так, стало быть, так таки и нету грепом никак в верхний регистр выборочно не перевести? Изумительно. Сказать, что я потрясен - это ничего не сказать... 'otbline''fp'
 
ну найти грепом и через uppercase
и индизайн тут не причем, если что ))
 
я знаю, как грепом :) можно искать первую букву перед дефисом и применять ей символьный стиль.
 
  • Спасибо
Реакции: NNN5
или не стиль, а All Caps в свойствах формата замены
 
я знаю, как грепом :) можно искать первую букву перед дефисом и применять ей символьный стиль.
Я оценил шутку, но надо именно через replace, ибо нужно не чисто индизайновское, а универсальное решение :D'cooll)'
 
Код:
var str = 'aaa-bbb';
var re = /\-[^\-]+$/g;
var res = str.replace(re, function (match) { return match.toUpperCase(); })
$.writeln(res)
 
Код:
var str = 'aaa-bbb';
var re = /(\-[^\-]+)$/g;
str.replace(re, RegExp.$1.toUpperCase());
 
var str = 'aaa-bbb'; var re = /(\-[^\-]+)$/g; str.replace(re, RegExp.$1.toUpperCase());
А вот этот вариант, кстати, не работает вообще:
"-fh-gG--Gdgf" -> "-fh-gG-"
И все равно, это вызов toUpperCase, а не прямая замена. Почему не работает модификатор \u во втором параметре replace? По идее это ж он должен задавать автоматический перевод в верхний регистр или что я недопонимаю? 'hz'
 

Не по теме:
И все равно, это вызов toUpperCase, а не прямая замена.
До чего ты привередлив!


Почему не работает модификатор \u во втором параметре replace?
Потому, что он там не предусмотрен в принципе. Второй параметр replace -- это либо строка куда вставляется что нужно из найденного, либо функция, которая это найденное обрабатывает.
А вот этот вариант, кстати, не работает вообще:
"-fh-gG--Gdgf" -> "-fh-gG-"
Код:
var str = '-fh-gG--Gdgf';
var re = /(\-.+)$/g;
str.replace(re, RegExp.$1.toUpperCase());
 
  • Спасибо
Реакции: Flame
var str = '-fh-gG--Gdgf'; var re = /(\-.+)$/g; str.replace(re, RegExp.$1.toUpperCase());
Гм, а так вообще пустую строку выдает
upload_2016-6-16_15-58-10.png

Фотошоп CS3, иллюстратор CS6
Или это только в индизайне работать будет? 'hmmm'
Потому, что он там не предусмотрен в принципе. Второй параметр replace -- это либо строка куда вставляется что нужно из найденного, либо функция, которая это найденное обрабатывает.
Ну это я понимаю, скорее всего так и есть, видимо я с перлом перепутал, что-то сейчас и не нагуглю, откуда я вообще этот \u взял 'hz' Мне просто важно было выяснить - можно ли одними модификаторами, без использования блоков кода сделать строку замены зависимой от найденного символа. Получается, что, вроде как, нельзя, печальбеда *(
 
кстати, что интересно - InDesign использует реализацию grep из библиотеки boost
а в ней \u на замену благополучно работает - в свое время прикручивал его к cs2
почему решили это изъять - непонятно
 
Статус
Закрыто для дальнейших ответов.