[ID CS4-CS6] Ранжирование в числах

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

zin_wlad

Участник
Топикстартер
Сообщения
12
Реакции
0
Подскажите как сделать замену или групировку цифр в GREP. Надо 10000 заменить на 10 000, 1000000 на 1 000 000.
 
Первый прикид:

Найти:
Код:
(\d{2,3})(\d{3})\>
Заменить:
Код:
$1~4$2
(или вместо четвертной шпации ~4 поставить любую другую неразрывную по вкусу).

Нажимать "Заменить всё" до тех пор, пока будет заменять.
Можно, наверно, сделать более сложную конструкцию - чтобы за 1 проход всё менялось, - но это дальше думать надо, а мне сейчас лениво :)
 
  • Спасибо
Реакции: granat и LeonidB
Код:
Find: (?<=\d)(\d{2})
Replace: ~.$1

digits.png

Upd.
Пардон, глупость написал. Исправлюсь :)
 
@similideus, у Вас 1000 разбивается (1 000), хоть и не должно, а 10000 - разбивается не там (1 0000).
Впрочем, и в моей конструкции 1000000 разбивается не полностью: 1000 000 - но это можно исправить второй заменой:
Код:
Найти: (\d)(\d{3})(~4\d)
Заменить: $1~4$2$3
.
 
Последнее редактирование:
Не сдаются числа, которые стоят в конце Story:
trouble.png

Но можно добавить временные символы после чисел::
Код:
//FindChangeList.txt
//
grep    {findWhat:"([0-9]+)"}    {changeTo:"$1#"}    {}    // set # mark
grep    {findWhat:"([0-9])(?=([0-9]{3})+#)"}    {changeTo:"$1 "}    {}    // do magic
grep    {findWhat:"(?<=[0-9])#"}    {changeTo:""}    {}    // remove # mark
 
Кстати, вот ещё вариант. И следующая за ним поправочка.
 
у меня вот такой вариант со Stack Overflow

(\d{1,3}(?=(\d{3})+(?:\.\d|\b)))
менять на
"$1 "
 
  • Спасибо
Реакции: LeonidB и similideus
Немножко я не дожал 'fp' Не сообразил как запустить вторую и третью итерации:
Код:
\\ Мой вариант
(\d)(?=(\d{3})+\b)

\\ Skvoznyak
(\d{1,3})(?=(\d{3})+\b)
 
а почему 1000 не должно? буржуи разбивают
 
мыж не буржуи.
у нас не положено
 
  • Спасибо
Реакции: NNN5 и LeonidB
а почему 1000 не должно? буржуи разбивают
Ну потому что старые и признанные советские справочники говорят о том, чтобы разбивать на разряды числа, начиная с пятизначных. Типа, наверно, чтобы не отрывать пробелом от числа одну цифру - подобно висячим строкам и т. п. И все как-то к этому привыкли.
Хотя Мильчин в последнем издании своего справочника и делает ссылку на стандарт СЭВ РС 2625—70 ("Основные математические обозначения"), в котором не делается исключения и для 4-значных. Но как-то оно в издательскую практику не внедряется, потому что чуждо и непривычно :)
Кстати, там же Мильчин рекомендует разбивать на разряды по 3 цифры и дробные часть десятичных дробей - но в обратном порядке, то есть слева направо от запятой:
1 267, 234 457 9 - но мы ж не совсем одичали, чтобы таких монстров создавать! В общем, как-то в этом вопросе с Мильчиным соглашаться не хочется.
А вот в таблицах, где 4-значные числа стоят в одном столбике с разбитыми на разряды 5-, 6- и более значными числами, разбивать в любом случае надо и 4-значные - чтобы разряды и пробелы по вертикали совпадали.
 
Последнее редактирование:
И, между прочим, с запуском таких замен надо поосторожнее. Если в тексте есть числа, которые разбивать на разряды нельзя, - то есть годы, номера документов после знака №, марки и наименования каких-нибудь машин и т. п. - то надо все замены делать, отслеживая, а не нажимать "Заменить всё".
 
  • Спасибо
Реакции: NNN5
Статус
Закрыто для дальнейших ответов.