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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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