Текущее время: Вс, июл 27 2025, 22:03

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: проверка пробелов перед @
СообщениеДобавлено: Чт, дек 16 2010, 12:56 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Чт, янв 28 2010, 15:25
Сообщения: 89
Добрый день.
Подскажите как можно проверить Email, на предмет пробелов перед @ и после @ в email адресе.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: проверка пробелов перед @
СообщениеДобавлено: Чт, дек 16 2010, 13:05 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Kurier1979 написал(а):
Добрый день.
Подскажите как можно проверить Email, на предмет пробелов перед @ и после @ в email адресе.

Code:
FIND REGEX '[ [:space:] ]' IN text MATCH OFFSET pos.


Добавил: Что касается Вашего конкретного случая, то в e-mail адресе ведь не должно быть пробелов вообще, поэтому если версия системы не поддерживает регулярные выражения можно сделать так
Code:
data: r(10) value '123 321'.
data: r2(10).

r2 = r.
condense r no-gaps.
if r2 = r.
else.
  message 'Error!' type 'E'.
endif.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: проверка пробелов перед @
СообщениеДобавлено: Чт, дек 16 2010, 13:15 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Чт, янв 28 2010, 15:25
Сообщения: 89
К сожалению не подходит....
Я не знаю количества символов в email адресе, а пробел находит всегда ( в конце email )

Нужно либо посчитать сразу количество знаков в мыле и сравнить с количеством знаков в pos, либо еще какое нить решение ! :)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: проверка пробелов перед @
СообщениеДобавлено: Чт, дек 16 2010, 13:18 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Чт, янв 28 2010, 15:25
Сообщения: 89
нужно еще проверять есть ли символы перед @ и после @


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: проверка пробелов перед @
СообщениеДобавлено: Чт, дек 16 2010, 13:22 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Kurier1979 написал(а):
К сожалению не подходит....

вот это не подходит? :?
Besa написал:
condense r no-gaps.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: проверка пробелов перед @
СообщениеДобавлено: Чт, дек 16 2010, 13:31 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Kurier1979 написал(а):
Я не знаю количества символов в email адресе

strlen
Kurier1979 написал(а):
нужно еще проверять есть ли символы перед @ и после @

В чем проблема? Хотя зачем это все делать вообще?
Kurier1979 написал(а):
либо еще какое нить решение ! :)

Решений много. То же split использовать... Читай те хелп по работы со строками в абапе.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: проверка пробелов перед @
СообщениеДобавлено: Чт, дек 16 2010, 15:34 
Специалист
Специалист

Зарегистрирован:
Чт, дек 16 2010, 15:23
Сообщения: 133
Откуда: Набережные Челны
Пол: Мужской
Делайте валидацию по регулярному выражению.
Например такой шаблон подойдет
Code:
^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*(\\.[A-Za-z]{2,})$


Проверите и на пробелы и другие недопустимые символы


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: проверка пробелов перед @
СообщениеДобавлено: Чт, дек 16 2010, 16:06 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Чт, янв 28 2010, 15:25
Сообщения: 89
Всем спасибо, решил:
Code:
DATA int TYPE i.
     FIND  '@' IN tb-ccemail MATCH OFFSET pos.
       IF pos <> 0.
         CONDENSE tb-ccemail NO-GAPS.
           IF tb-ccemail(1) = '@'.
               CLEAR tb-ccemail.
           ELSE.
               int = STRLEN( tb-ccemail ).
               int = int - 1.
            IF tb-ccemail+int(1) = '@'.
              CLEAR tb-ccemail.
            ENDIF.
        ENDIF.
      ELSE.
          CLEAR tb-ccemail.
      ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: проверка пробелов перед @
СообщениеДобавлено: Чт, дек 16 2010, 16:30 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Code:
DATA: name(60) TYPE c,
      site(60) TYPE c.
CONDENSE tb-ccemail NO-GAPS.
SPLIT tb-ccemail AT '@' INTO name site.
IF name IS INITIAL or site IS INITIAL.
  CLEAR tb-ccemail.
ENDIF

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: проверка пробелов перед @
СообщениеДобавлено: Пт, дек 17 2010, 15:12 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
В качестве замечания.
Проверку на синтаксически корректный ввод будь то правила написания email, или проверку является ли введенная строка числом(с учетом знаков, научной формы и т.д.) можно(и очень просто!) реализовать за один проход по строке, обращаясь к каждому символу строки ровно один раз.



Code:


На вход – строка на выход
*2 - целое, полжительное
*3 - дробное, положительное
*4 - целое, отрицательное
*5 - дробное, отрицательное
*6 - ошибка

PERFORM test
        USING str
        CHANGING ok_code.
ok_code = ok_code.

FORM test USING    p_str TYPE string
          CHANGING p_ok_code TYPE c.

  DATA: len TYPE i.
  DATA: i TYPE i.
  len = strlen( p_str ).
  i = 0.
  p_ok_code = 1.
  DO len TIMES.
    CASE p_str+i(1).
      WHEN ' '.
        CASE p_ok_code.
          WHEN '1'.
            p_ok_code = 1.
          WHEN OTHERS.
            p_ok_code = 6.
            EXIT.
        ENDCASE.
      WHEN '0'.
        CASE p_ok_code.
          WHEN '1'.
            p_ok_code = 2.
        ENDCASE.
      WHEN '1'.
        CASE p_ok_code.
          WHEN '1'.
            p_ok_code = 2.
        ENDCASE.
      WHEN '2'.
        CASE p_ok_code.
          WHEN '1'.
            p_ok_code = 2.
        ENDCASE.
      WHEN '3'.
        CASE p_ok_code.
          WHEN '1'.
            p_ok_code = 2.
        ENDCASE.
      WHEN '4'.
        CASE p_ok_code.
          WHEN '1'.
            p_ok_code = 2.
        ENDCASE.
      WHEN '5'.
        CASE p_ok_code.
          WHEN '1'.
            p_ok_code = 2.
        ENDCASE.
      WHEN '6'.
        CASE p_ok_code.
          WHEN '1'.
            p_ok_code = 2.
        ENDCASE.
      WHEN '7'.
        CASE p_ok_code.
          WHEN '1'.
            p_ok_code = 2.
        ENDCASE.
      WHEN '8'.
        CASE p_ok_code.
          WHEN '1'.
            p_ok_code = 2.
        ENDCASE.
      WHEN '9'.
        CASE p_ok_code.
          WHEN '1'.
            p_ok_code = 2.
        ENDCASE.
      WHEN ','.
        CASE p_ok_code.
          WHEN '2'.
            p_ok_code = 3.
          WHEN '4'.
            p_ok_code = 5.
          WHEN OTHERS.
            p_ok_code = 6.
            EXIT.
        ENDCASE.
      WHEN '.'.
        CASE p_ok_code.
          WHEN '2'.
            p_ok_code = 3.
          WHEN '4'.
            p_ok_code = 5.
          WHEN OTHERS.
            p_ok_code = 6.
            EXIT.
        ENDCASE.
      WHEN '-'.
        CASE p_ok_code.
          WHEN '1'.
            p_ok_code = 4.
          WHEN OTHERS.
            p_ok_code = 6.
            EXIT.
        ENDCASE.
      WHEN OTHERS.
        p_ok_code = 6.
        EXIT.
    ENDCASE.
    ADD 1 TO i.
  ENDDO.

  IF  p_ok_code = 1.
    p_ok_code = 6.
  ENDIF.
ENDFORM.                    " test


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: проверка пробелов перед @
СообщениеДобавлено: Сб, дек 18 2010, 08:38 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 20 2008, 16:29
Сообщения: 245
Откуда: RU->DE
Пол: Мужской
__Gennady написал(а):
В качестве замечания.
можно(и очень просто!) реализовать
Code:
' > 100 строк кода


да уж.. просто :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: проверка пробелов перед @
СообщениеДобавлено: Сб, дек 18 2010, 09:51 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
Там код-то примитивный. Знакомые с теорией автоматов должны опознать что это)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB