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

Статус
Закрыто для дальнейших ответов.

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Есть текстовая строка, надо в ней перевести все символы, стоящие после "-" в верхний регистр.
Альтернативное решение найдено такое:
Код:
function replacer(str, p1,  offset, s)
{
   return "-"+p1.toUpperCase();
}
alert(str.replace(/-(\w)/g,  replacer));
Вопрос: как это сделать прямым способом? Почему не работает модификатор \u или как его правильно приготовить?
 

azz

alexey
15 лет на форуме
Сообщения
711
Реакции
359
\u только при поиске работает.
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Так, стало быть, так таки и нету грепом никак в верхний регистр выборочно не перевести? Изумительно. Сказать, что я потрясен - это ничего не сказать... 'otbline''fp'
 

azz

alexey
15 лет на форуме
Сообщения
711
Реакции
359
ну найти грепом и через uppercase
и индизайн тут не причем, если что ))
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 228
Реакции
10 851

vbatushev

20 лет на форуме
Сообщения
2 242
Реакции
1 227
я знаю, как грепом :) можно искать первую букву перед дефисом и применять ей символьный стиль.
 
  • Спасибо
Реакции: NNN5

vbatushev

20 лет на форуме
Сообщения
2 242
Реакции
1 227
или не стиль, а All Caps в свойствах формата замены
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 228
Реакции
10 851
я знаю, как грепом :) можно искать первую букву перед дефисом и применять ей символьный стиль.
Я оценил шутку, но надо именно через replace, ибо нужно не чисто индизайновское, а универсальное решение :D'cooll)'
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 228
Реакции
10 851

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 216
Код:
var str = 'aaa-bbb';
var re = /\-[^\-]+$/g;
var res = str.replace(re, function (match) { return match.toUpperCase(); })
$.writeln(res)
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 228
Реакции
10 851

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 216
Код:
var str = 'aaa-bbb';
var re = /(\-[^\-]+)$/g;
str.replace(re, RegExp.$1.toUpperCase());
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 228
Реакции
10 851
var str = 'aaa-bbb'; var re = /(\-[^\-]+)$/g; str.replace(re, RegExp.$1.toUpperCase());
А вот этот вариант, кстати, не работает вообще:
"-fh-gG--Gdgf" -> "-fh-gG-"
И все равно, это вызов toUpperCase, а не прямая замена. Почему не работает модификатор \u во втором параметре replace? По идее это ж он должен задавать автоматический перевод в верхний регистр или что я недопонимаю? 'hz'
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 216

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


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

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 228
Реакции
10 851
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' Мне просто важно было выяснить - можно ли одними модификаторами, без использования блоков кода сделать строку замены зависимой от найденного символа. Получается, что, вроде как, нельзя, печальбеда *(
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
кстати, что интересно - InDesign использует реализацию grep из библиотеки boost
а в ней \u на замену благополучно работает - в свое время прикручивал его к cs2
почему решили это изъять - непонятно
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 216
Статус
Закрыто для дальнейших ответов.