|
Разбить составное слитное слово | ☑ | ||
---|---|---|---|---|
0
abitfrosty
21.02.12
✎
11:55
|
Может кто-то знает, как из "ЕдиницаИзмерения" получить строку "Единица измерения". Так, как это делает 1с штатными механизмами.
|
|||
1
Чайник Рассела
21.02.12
✎
11:56
|
метод РазбитьСоставноеСлитноеСлово()
|
|||
2
DrShad
21.02.12
✎
11:57
|
(1) +100500
|
|||
3
DrShad
21.02.12
✎
11:59
|
делов то на 10 минут
|
|||
4
Reset
21.02.12
✎
12:00
|
СтрЗаменить(ТРег("Единица измерения")," ","") --> ЕдиницаИзмерения
Я знаю, тебе нужно с тичностью наоборот,, но решил просто отметиться в теме. |
|||
5
abitfrosty
21.02.12
✎
12:02
|
(3) Да знаю, что не долго, мало ли кто-то недавно делал, 10 минут тоже сэкономить неплохо)
|
|||
6
YFedor
21.02.12
✎
12:02
|
(5) Поздно, ты 7 уже потратил
|
|||
7
Fish
21.02.12
✎
12:03
|
(5) 7 минут на мисте ты уже потерял. :)))
|
|||
8
D_Pavel
21.02.12
✎
12:03
|
(7) Ты 7 минут потерял
|
|||
9
D_Pavel
21.02.12
✎
12:03
|
(8) - (5)
|
|||
10
Reset
21.02.12
✎
12:04
|
(6),(7) Поскольку осталось 3 минуты, а за 3 он не напишет, остается биться до последнего и ждать результата здесь (чтобы 7 минут не были потрачены зря)
|
|||
11
Fish
21.02.12
✎
12:06
|
(0) Ладно уж, помогу:
Если Стр = "ЕдиницаИзмерения" Тогда Стр = "Единица измерения"; КонецЕсли; |
|||
12
НафНаф
21.02.12
✎
12:06
|
время вышло
|
|||
13
DrShad
21.02.12
✎
12:06
|
в минус работы ушли
|
|||
14
D_Pavel
21.02.12
✎
12:06
|
(0) Нужно искать все заглавные буквы и заменять их на пробел и маленькую букву.
|
|||
15
DrShad
21.02.12
✎
12:07
|
(14) не нужно их искать
|
|||
16
НафНаф
21.02.12
✎
12:07
|
(14) там хитрее (у 1С)
|
|||
17
D_Pavel
21.02.12
✎
12:17
|
(15) Иначе никак
(16) Там с некоторыми дополнениями и условиями. |
|||
18
DrShad
21.02.12
✎
12:18
|
(17) уверен? что иначе никак? за 5000 я тебе покажу как делается иначе и проще
|
|||
19
abitfrosty
21.02.12
✎
12:22
|
regexp?)
|
|||
20
D_Pavel
21.02.12
✎
12:25
|
(18) 5000 за такое не дам. Если понадобится, мне за 200 сделают более сложным способом чем даже я написал.
|
|||
21
hhhh
21.02.12
✎
12:27
|
(19) как 1С делает, подскажу.
У реквизита есть имя "ЕдиницаИзмерения", а есть синоним "Единица измерения". Поэтому вам по уму надо взять синоним из метаданных этого реквизита. |
|||
22
DexterMorgan
21.02.12
✎
12:28
|
Представление()
|
|||
23
DexterMorgan
21.02.12
✎
12:28
|
для метаданных
|
|||
24
DrShad
21.02.12
✎
12:29
|
(21) ТС привел как пример и не факт что он по метаданным идет
|
|||
25
DexterMorgan
21.02.12
✎
12:30
|
(21) Ну млин а если синоним отсутствует? мало ли
(18) заинтриговал+) |
|||
26
abitfrosty
21.02.12
✎
12:31
|
(21) Оно не имеет метаданных
|
|||
27
salvator
21.02.12
✎
12:35
|
(26) Строка чёли?
|
|||
28
abitfrosty
21.02.12
✎
12:36
|
(27) Да
|
|||
29
hhhh
21.02.12
✎
12:36
|
(28) ну тогда элементарно: иди по тексту и меняй каждый большой символ на пробел+маленький символ. Детская задача, а ты уже почти час паришься.
|
|||
30
salvator
21.02.12
✎
12:37
|
(28) Циклом пройди по каждому символу в строке, и если символ заглавный, но меняй его на пробел+строчный
|
|||
31
Starhan
21.02.12
✎
12:46
|
(30) у тя ошибка в алгоритме
|
|||
32
Starhan
21.02.12
✎
12:47
|
хотя вру )
|
|||
33
Starhan
21.02.12
✎
12:47
|
но надо проверить на две заглавные пордяд )
|
|||
34
Starhan
21.02.12
✎
12:48
|
(30) и начинать надо со 2го символа
|
|||
35
Jaffar
21.02.12
✎
12:50
|
(33) а что тут не так? МетрыИКилограммы должны превратиться в "Метры и килограммы", исключений для 2 подряд заглавных нет.
|
|||
36
DrShad
21.02.12
✎
12:50
|
(20) ну как тебе решение в (29)? без поиска
|
|||
37
Reset
21.02.12
✎
12:59
|
(29) Так он и не парится. Сидит с покорном и ждет, когда напишут.
|
|||
38
DexterMorgan
21.02.12
✎
13:16
|
(36) Что значит без поиска? условие на то, что заглавная и есть поиск при обходе..
|
|||
39
DexterMorgan
21.02.12
✎
13:17
|
(36) он это и имел ввиду
|
|||
40
Fish
21.02.12
✎
13:20
|
Всё спорите и спорите, а правильный ответ на (0) был ещё в (11) :))))
|
|||
41
Reset
21.02.12
✎
13:28
|
(40) Там не по феншую. По феншую должна быть еще
Иначе ВызыватьИсключение "Такая строка не поддреживается" тогда решение будет законченным |
|||
42
Fish
21.02.12
✎
13:32
|
(41) Согласен, только вместо ВызватьИсключение я бы использовал ЗавершитьРаботуСистемы(Ложь) :)))
|
|||
43
davidman1984
21.02.12
✎
13:36
|
вход="МетрыИКилограммы";
стр=Прав(вход,СтрДлина(вход)-1); разница=КодСимвола("а")-КодСимвола("А"); Для с=КодСимвола("А") по КодСимвола("Я") цикл стр=СтрЗаменить(стр,Символ(с)," "+Символ(с+разница)); КонецЦикла; стр=СокрЛП(стр); выход=Лев(вход,1)+стр; Сообщить(выход); |
|||
44
davidman1984
21.02.12
✎
13:40
|
вход="МетрыИКилограммы";
стр=Прав(вход,СтрДлина(вход)-1); разница=КодСимвола("а")-КодСимвола("А"); Для с=КодСимвола("А") по КодСимвола("Я") цикл стр=СтрЗаменить(стр,Символ(с)," "+Символ(с+разница)); КонецЦикла; // стр=СокрЛП(стр); выход=Лев(вход,1)+стр; Сообщить(выход); оно лишнее :) |
|||
45
Reset
21.02.12
✎
13:45
|
(44) Можно написать Гораздо лучше по методу из (29), код будет в 3 раза короче, при этом поддерживать также латиницу и знаки препинания. Слабо?
|
|||
46
Reset
21.02.12
✎
13:46
|
+(45) плюс грубо в 5-10 раз быстрее
|
|||
47
D_Pavel
21.02.12
✎
13:48
|
(36) То же самое что я предложил. Это и было решение за 5000?
|
|||
48
DexterMorgan
21.02.12
✎
13:50
|
Для i=1 По СтрДлина(ТвояСтрока) Цикл
ПроверяемыйСимвол = Сред(ТвояСтрока, i, 1); Если ПроверяемыйСимвол = ВРег(ПроверяемыйСимвол) Тогда СтрЗаменить(ПроверяемыйСимвол, " " + НРег(ПроверяемыйСимвол); КонецЕсли; КонецЦикла; P.S. Не проверял =)) |
|||
49
D_Pavel
21.02.12
✎
13:51
|
(48) +1, так по моему и надо
|
|||
50
DexterMorgan
21.02.12
✎
13:51
|
о надо в цикле еще i=i+1, тк на два символа меняем
|
|||
51
D_Pavel
21.02.12
✎
13:52
|
Только потом СокрЛ () сделать
|
|||
52
Reset
21.02.12
✎
13:52
|
(49) После драки? кулаками? Дада, ты точно то же и имел в виду.
ТС кстати грац - дождался (ну почти) Сейчас еще ошибки исправят, подрихтуют) |
|||
53
davidman1984
21.02.12
✎
13:55
|
вход="ВМетрыИКилограммы";
стр=Лев(вход,1); разница=КодСимвола("а")-КодСимвола("А"); Для н=2 по СтрДлина(вход) цикл тек=КодСимвола(вход,н); Если (тек>=КодСимвола("А"))И(тек<=КодСимвола("Я")) Тогда стр=стр+" "+Символ(тек+разница); иначе стр=стр+Символ(тек); КонецЕсли; КонецЦикла; Сообщить(стр); |
|||
54
D_Pavel
21.02.12
✎
14:00
|
(52) В каком смысле дада? На самом деле, я именно это и говорил. Смотри (14)
|
|||
55
DexterMorgan
21.02.12
✎
14:09
|
i = 2;
Пока Сред(ТвояСтрока, i) <> "" Цикл ПроверяемыйСимвол = Сред(ТвояСтрока, i, 1); Если ПроверяемыйСимвол = ВРег(ПроверяемыйСимвол) Тогда СтрокаЗамены = " " + НРег(ПроверяемыйСимвол); ТвояСтрока = СтрЗаменить(ТвояСтрока, ПроверяемыйСимвол, СтрокаЗамены); КонецЕсли; i = i + 1; КонецЦикла; |
|||
56
kinsm
21.02.12
✎
14:17
|
(55) Неверно. КоличествоКолбасы => количество колбасы
|
|||
57
Reset
21.02.12
✎
14:19
|
(54) В том, что когда кто-то решит, сказать, "я хотел так же, я тоже умный, даже раньше".
В (14) - некая формализация условия из (0), а не предложение. Причем неточно сформулированное. Ничего "искать" не нужно. Впрочем, я думаю, мы с тобой на разных языках говорим. |
|||
58
DexterMorgan
21.02.12
✎
14:23
|
(56) i=2 МБ???!!
|
|||
59
kinsm
21.02.12
✎
14:24
|
+(55) хотя вообще не отработает по причине (50)
|
|||
60
DexterMorgan
21.02.12
✎
14:24
|
(56) Че ты врешь тестер=)))
|
|||
61
DexterMorgan
21.02.12
✎
14:24
|
(59) Не вводи людей в заблуждение.
|
|||
62
DexterMorgan
21.02.12
✎
14:25
|
(59) Я проверил=)
|
|||
63
DrShad
21.02.12
✎
14:25
|
(47) поиск и перебор разные вещи если что
|
|||
64
kinsm
21.02.12
✎
14:26
|
(60) Если в строке будут 2 одинаковые заглавные буквы и одна из них первая, то код заменит обе, что не по условию в (0). А вообще твой код в (55) не может работать
|
|||
65
kinsm
21.02.12
✎
14:28
|
(58) ТвояСтрока = СтрЗаменить(ТвояСтрока, ПроверяемыйСимвол, СтрокаЗамены); заменяет все вхождения подстроки, независимо от твоего i2
|
|||
66
DexterMorgan
21.02.12
✎
14:31
|
(65) Ладно, не проверял, ибо нах=)))
|
|||
67
kinsm
21.02.12
✎
14:31
|
(66) ну и вдогонку: i = i + 1 надо внутрь условия добавить, чтоб вообще заработало
|
|||
68
Киборг
21.02.12
✎
14:35
|
Можно и без программирования решить задачку... Добавить кнопку командной панели "ВМетрыИКилограммы", не указывая текст. Тогда в ее свойстве "Текст" будет значение "В метры и килограммы". :)
|
|||
69
DexterMorgan
21.02.12
✎
14:35
|
(67) Да тут кароче надо просто новую строку формировать, а не в старой пытаться заменить ибо (65)
|
|||
70
Reset
21.02.12
✎
14:37
|
Исходная="ВесИОбъемToBeOrNotToBe";
Конечная=Лев(Исходная,1); Для Индекс=2 по СтрДлина(Исходная) цикл Символ=Сред(Исходная,Индекс,1); Конечная=Конечная+?(ВРег(Символ)=Символ," "+НРег(Символ),Символ); КонецЦикла; |
|||
71
Reset
21.02.12
✎
14:38
|
(чтоб за сотку не перевалило)
|
|||
72
kinsm
21.02.12
✎
14:40
|
(71) гыгы, к 70 посту родили-таки работающее решение
|
|||
73
Киборг
21.02.12
✎
14:46
|
(70) "ВПроизводныеИзСИ" -> "В производные из СИ" получится?
|
|||
74
D_Pavel
22.02.12
✎
06:31
|
(57) Я не говорю что я "хотел" так же, я говорю что я предложил так же.
Как это ничего не нужно искать? А как ты определишь в какой позиции нужно заменять букву, телепатией чтоли? Я согласен с тобой в том что ты меня не понял. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |