|
Проверить, что символ является буквой | ☑ | ||
---|---|---|---|---|
0
Ненавижу 1С
гуру
10.06.13
✎
11:57
|
Задача: Является ли символ буквой. Язык 1С 8.2.
Разные есть варианты решения, но хотелось бы: 1. лаконичного 2. без использования ВК (проверка силы языка) 3. универсального (для разных алфавитов) И я таки думал, что решение это ЭтоБуква = (НРег(СимволПроверки)<>ВРег(СимволПроверки)); Оказалось зря я так думал. Вот и прошу Вас подумать тоже. |
|||
1
Defender aka LINN
10.06.13
✎
11:59
|
(0) Регулярные выражения, не?
|
|||
2
Dmitrith
10.06.13
✎
11:59
|
Как-то так:
СтрокаПроверки="АБВГД...ЭЮЯ" Если Найти(ВРЕГ(Симв),СтрокаСимволов)>0 Тогде Сообщить"Бинго!") КонецЕсли; |
|||
3
cw014
10.06.13
✎
11:59
|
А в каких еще случаях он не равен ВРЕГУ?
|
|||
4
Dmitrith
10.06.13
✎
12:00
|
(3) Если маленькая буква,не?
|
|||
5
fisher
10.06.13
✎
12:00
|
А какой критерий "буквы"? Всё, что не цифра? Или всё, что не буква некоего алфавита (тогда какого)?
|
|||
6
Ненавижу 1С
гуру
10.06.13
✎
12:00
|
(1) в платформе есть?
(2) а если буквы будут якутские? (3) кто? |
|||
7
hhhh
10.06.13
✎
12:01
|
(0) ну вроде стандартное
Найти("АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ", ВРЕГ(Сред(Стр, Поз, 1))) |
|||
8
Ненавижу 1С
гуру
10.06.13
✎
12:01
|
(5) буква - символ некоего алфавита.
|
|||
9
Dmitrith
10.06.13
✎
12:01
|
(6) Тогда СтрокаСимволовЯкутии="..."
|
|||
10
Михаил 1С
10.06.13
✎
12:02
|
(0) Код символа не хочешь использовать?
|
|||
11
Ненавижу 1С
гуру
10.06.13
✎
12:02
|
(9) а потом Израиля и т.д. и т.п.
|
|||
12
Ненавижу 1С
гуру
10.06.13
✎
12:02
|
(10) хочу, но зачем?
|
|||
13
Михаил 1С
10.06.13
✎
12:02
|
Буквы они вместе расположены. Достаточно проверить - если Код от Код1 до Код2, то это буква.
|
|||
14
IШаман
10.06.13
✎
12:02
|
(10) Про якутские символы читал?
|
|||
15
Ненавижу 1С
гуру
10.06.13
✎
12:02
|
(13) не верю
|
|||
16
Михаил 1С
10.06.13
✎
12:03
|
(15) Ну вообще, да, я могу и наврать :)
Но цифры - они точно расположены вместе, я проверял :) А тебе надо сразу для всех алфавитов? |
|||
17
IШаман
10.06.13
✎
12:03
|
Можно что то типа предлженного тобой в ноль, только с обработкой исключения. Некрасиво - но зато просто.
|
|||
18
Ненавижу 1С
гуру
10.06.13
✎
12:03
|
да, код в (0) неверно работает для грузинских букв
|
|||
19
Godofsin
10.06.13
✎
12:04
|
Попытка
Образец = Число(НашСимвол); Исключение Сообщить("Ни хрена не цифра"); КонецПопытки; |
|||
20
fmrlex
10.06.13
✎
12:04
|
СтрокаПроверки="!"№№;;%%::?*?*(())()+всевсесимволы"
Если Найти(ВРЕГ(Симв),СтрокаСимволов)=0 Тогда Сообщить"Бинго!") КонецЕсли; |
|||
21
Эмбеддер
10.06.13
✎
12:04
|
(0) все-таки НРЕГ<>ВРЕГ чем не подходит?
|
|||
22
IШаман
10.06.13
✎
12:04
|
(18) А если что то типа Строка()
|
|||
23
Михаил 1С
10.06.13
✎
12:05
|
(19) не подойдет, ведь всякие кракозябры - не цифры и не буквы.
|
|||
24
Эмбеддер
10.06.13
✎
12:05
|
все вижу ответ в (18)
|
|||
25
Ненавижу 1С
гуру
10.06.13
✎
12:05
|
(21) см (18)
|
|||
26
Гефест
10.06.13
✎
12:06
|
ЭтоБуква = Вопрос("Это буква: " + Символ + "?",РежимДиалогаВопрос.ДаНет)
|
|||
27
fisher
10.06.13
✎
12:07
|
(8) Тогда я бы покурил таблицы символов на предмет подходящих закономерностей и функцию Символ().
|
|||
28
fmrlex
10.06.13
✎
12:07
|
+(20) Метод исключения.
|
|||
29
Godofsin
10.06.13
✎
12:08
|
(27) а чо? возможно взлетит
|
|||
30
Kreont
10.06.13
✎
12:08
|
небукв меньше, чем букв во всех алфавитах :)
Засунь все небуквы в строку и как то аналогично (20) проверяй Хотя если по таблице аски кодов смотреть то цифри и спецсиволы по кодам лежат вначале, посмотри может и вхватит такоцй проверки. |
|||
31
Ковычки
10.06.13
✎
12:10
|
(30) не прав
|
|||
32
fisher
10.06.13
✎
12:10
|
(27) + Тьфу, не Символ() - КодСимвола(). Стопудово там что-то такое с диапазонами можно сообразить.
|
|||
33
Лефмихалыч
10.06.13
✎
12:11
|
(6) без регэкспов хорошо не получится
|
|||
34
Ненавижу 1С
гуру
10.06.13
✎
12:12
|
(33) видимо 1с таки в новых движках встроит регулярки
|
|||
35
kiruha
10.06.13
✎
12:12
|
(33)
Все символы в массив или ТЗ с индексацией. Потом проверка на вхождение - работает очень быстро |
|||
36
kiruha
10.06.13
✎
12:13
|
Не хуже регэкспов
|
|||
37
Лефмихалыч
10.06.13
✎
12:13
|
(35) соответствие для этих целей придумано
|
|||
38
Ковычки
10.06.13
✎
12:13
|
?
|
|||
39
Ковычки
10.06.13
✎
12:14
|
0x02A6 - это буква или нет ?
|
|||
40
Лефмихалыч
10.06.13
✎
12:15
|
+(39) № - это буква?
|
|||
41
kiruha
10.06.13
✎
12:15
|
(37)
Пофиг Любая индексиркуемая конструкция |
|||
42
Ковычки
10.06.13
✎
12:19
|
(34) встроено уже - ПолеHTML, конечно некузёво, но есть
|
|||
43
Лефмихалыч
10.06.13
✎
12:21
|
(42) нипонел. Как связано поле html документа с регэкспами?
|
|||
44
Ненавижу 1С
гуру
10.06.13
✎
12:21
|
(39) QChar::isLetter(0x02A6) //true
(40) QChar::isLetter('№') //false |
|||
45
Лефмихалыч
10.06.13
✎
12:22
|
(44) с такими понятиями тебе либо ВК, которая будет возвращать то же самое, либо - в ТЗ все, что ты считаешь буквами.
|
|||
46
kiruha
10.06.13
✎
12:22
|
А если еще ТЗ с символами запихнуть в кэшируемую на сервере функцию - регэксп отдыхает
Итого не нужно |
|||
47
Jaap Vduul
10.06.13
✎
12:30
|
(35)
На unicode.org таблицы символов (где указывается в т.ч. и категория символа, для букв - letter*) в зипованном виде десятки мегабайт занимают. Так что такая методика имеет смысл, только если заранее ограничить круг возможных языков. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |