Форум компании Кронос-Информ | |
http://www.cronos.ru/cgi-bin/YaBB2/YaBB.cgi
Конференции для пользователей >> CronosPRO: формулы >> Строчные и прописные буквы http://www.cronos.ru/cgi-bin/YaBB2/YaBB.cgi?num=1605002902 Сообщение написано Xorti в 10.11.2020 :: 14:08:22 |
Заголовок: Строчные и прописные буквы Создано Xorti в 10.11.2020 :: 14:08:22
Подскажите формулу чтобы каждое слово в строке начиналось с большой буквы.
Например имеем: ИВАНОВ ИВАН ИВАНОВИЧ или иванов иван иванович В идеале надо: Иванов Иван Иванович |
Заголовок: Re: Строчные и прописные буквы Создано Zuluss в 10.11.2020 :: 19:56:11
Вроде простая задачка, но "в одну строчку" не получается. Вариантов достаточно много. Лучше всего использовать Lua. Можно вызывать и из формул. Интересно было попробовать REGEXPREPLACE, но оказалось, что другие функции внутри этой, с передачей захваченных значений, не работают (может не знаю как использовать).
Вот простой для понимания вариант с посимвольным перебором и сравнением с предыдущим символом: Code (]@s:="иванов иван иванович ИВАНОВ ИВАН ИВАНОВИЧ" @L:=LEN(@S); @I:=1; @os:="" // содержит итоговое значение @prev:="" WHILE(@I<=@L) DO [ @curs:=SUBSTR(@s,@I,1); if (CHECKSYMBOL(@prev," .?!,") | @I=1) then [@curs:=UPPER(@curs)):
|
Заголовок: Re: Строчные и прописные буквы Создано Mit в 20.11.2020 :: 15:08:40
Тоже не одной строкой, но работает )
@str:="иванов иван иванович ИВАНОВ ИВАН ИВАНОВИЧ" @@Upsubstr @i := 0 @res(2) := 1 while ( @res(2) # 0 ) do ( @res := getnext ( @str, " ", @i ) @@Upsubstr(-1):=ULOWER (@res(1)) @i := @res(2) ) @ret:=CONCAT ( @@Upsubstr, " ") |
Заголовок: Re: Строчные и прописные буквы Создано Zuluss в 20.11.2020 :: 19:59:47
Последний вариант не учитывает разделители в виде знаков препинания. "иванов и.и."
|
Заголовок: Re: Строчные и прописные буквы Создано pav3l в 22.01.2021 :: 14:14:59
Добрый день.
Есть база (БА) в который имеются поля ФИО (БА1), адрес (БА2), телефон (БА3), дети (БА4),дата рождения (БА5), история измения записи (БА6). В множественное поле БА6 заносится какие измения по отношению к первичной записи были произведены. Была мысль такая @string:= БА1<<БА2<<БА3<<БА4<<БА5; //все в одну строку объеденить if(БА6="") then (БА6(1):=@string) if(БА6#"") then ( @result:=DeleteWords(@string,БА6(1)); if(@result#"") then(БА6(-1):=@result;) ) это работало,если б был только текст. но тут присутствуют номер телефона и дата рождения. Как это обойти?? или может все загнать в какую нибудь хеш-функцию и сравнивать? |
Заголовок: Re: Строчные и прописные буквы Создано Mit в 25.01.2021 :: 15:13:21
Возможно сначала текстовые записи из нужных полей преобразовать в удобочитаемый вид, а затем уж склеить в одну строку :)
|
Заголовок: Re: Строчные и прописные буквы Создано Zuluss в 25.01.2021 :: 15:33:56
Вариантов реализации много.
При реализации по Вашему варианту непонятно кто и когда вносил изменения. А если запись будет удалена? Если делать историю изменений, то одним из вариантов можно рассмотреть отдельный текстовой пополняемый файл с фиксацией даты, времени, пользователя, номера поля и содержания внесенных измнений. |
Форум компании Кронос-Информ » Powered by YaBB 2.5.2! YaBB © 2000-2009. Все права защищены. Localization by mySOPROMAT.ru |