purebasic.info

PureBasic forum
Текущее время: Пн июл 16, 2018 9:24 am

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




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Escape/Unescape String
СообщениеДобавлено: Ср апр 08, 2015 4:59 pm 
Не в сети
док
Аватар пользователя

Зарегистрирован: Сб мар 28, 2015 11:06 pm
Сообщений: 139
Откуда: Україна
Благодарил (а): 7 раз.
Поблагодарили: 10 раз.
Пункты репутации: 4
(Escape character) Экранирование символов — замена в тексте управляющих символов на соответствующие текстовые подстановки.
В данном случае для Java/.Net Escape
Пример:
Код:
1
Привет мир  = \u041F\u0440\u0438\u0432\u0435\u0442 \u043C\u0438\u0440




Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
; EnableUnicode
 
Procedure.s EscapeString(String.s)
  Protected Build.s = ""
  Protected *C.CHARACTER = @String
  While (*C\c)
    Select (*C\c)
      Case '"'
        Build + "\" + #DQUOTE$
      Case '\'
        Build + "\\"
      ;Case '/'
      ;  Build + "\/"
      Case #BS
        Build + "\b"
      Case #FF
        Build + "\f"
      Case #LF
        Build + "\n"
      Case #CR
        Build + "\r"
      Case #TAB
        Build + "\t"
      Default
        If ((*C\c >= $20) And (*C\c <= $FF))
          Build + Chr(*C\c)
        Else
          Build + "\u" + RSet(Hex(*C\c), 4, "0")
        EndIf
    EndSelect
    *C + 2
  Wend
  ProcedureReturn (Build)
EndProcedure
 
Procedure.s UnescapeString(string$) ;can be compiled as both ASCII and Unicode
  Protected len, pos, hex$, result$, unicode.c, char$, uChar$ = Space(1)
  len = Len(string$)
  For pos=1 To len
    char$ = Mid(string$,pos,1)
    If char$ = "\" And Mid(string$,pos+1,1) = "u"
      hex$ = Mid(string$,pos+2,4)
      If #PB_Compiler_Unicode=#False And Left(hex$,2) <> "00" ;this char can't fit within the extended ASCII table
        result$ + "?"
      Else
        unicode = Val("$"+hex$) ;the returned quad truncates fine
        PokeC(@uChar$,unicode)
        result$ + uChar$
      EndIf
      pos + 5
    Else
      result$ + char$
    EndIf
  Next
  ProcedureReturn result$
EndProcedure
 
 
String.s =  "Привет мир Hello World"
 
String = EscapeString(String)
Debug "Escape String: " + String
Debug "Unescape String: " + UnescapeString(String)



Последний раз редактировалось LinXP Вс апр 19, 2015 3:20 am, всего редактировалось 3 раз(а).

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Escape/Unescape String
СообщениеДобавлено: Пт апр 17, 2015 10:31 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Объясните для нас малограмотных, что обозначает сей код
Из "Привет мир : Hello World"
сделать
Пие и el ol
Пие и el ol
В чем сила брат?

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Escape/Unescape String
СообщениеДобавлено: Сб апр 18, 2015 8:58 am 
Не в сети
профессор

Зарегистрирован: Чт сен 22, 2011 6:21 pm
Сообщений: 230
Благодарил (а): 31 раз.
Поблагодарили: 22 раз.
Пункты репутации: 0
pablov писал(а):
В чем сила брат?
Сила в юникоде, адназначна :) (хотя автору надо было это указать)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Escape/Unescape String
СообщениеДобавлено: Сб апр 18, 2015 11:57 am 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Ну поставил я галку уникода, получил
Цитата:
Ïðèâåò ìèð : Hello World
Ïðèâåò ìèð : Hello World

но в чем сила так и не понял. Неужели такая сложность к своему коду добавить каменты, тем более когда выкладываешь на общественный ресурс
Имхо это просто неуважение к окружающим

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Escape/Unescape String
СообщениеДобавлено: Сб апр 18, 2015 12:16 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11204
Благодарил (а): 4 раз.
Поблагодарили: 421 раз.
pablov писал(а):
Ну поставил я галку уникода, получил
Про UTF-8 забыл?

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Escape/Unescape String
СообщениеДобавлено: Сб апр 18, 2015 12:30 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Ну поставил UTF-8
Получил
Цитата:
\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD : Hello World
������������ ������ : Hello World

Объясните мне тупому, что этот код делает и где его можно применить...

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Escape/Unescape String
СообщениеДобавлено: Сб май 23, 2015 9:42 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Вот это трюк, никто не может ответить, даже сам афтар

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Escape/Unescape String
СообщениеДобавлено: Вт июн 09, 2015 7:02 pm 
Не в сети
док
Аватар пользователя

Зарегистрирован: Сб мар 28, 2015 11:06 pm
Сообщений: 139
Откуда: Україна
Благодарил (а): 7 раз.
Поблагодарили: 10 раз.
Пункты репутации: 4
у меня почему то работает...
Изображение
используется при распарсивании данных с некоторых сереверов


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Escape/Unescape String
СообщениеДобавлено: Ср авг 12, 2015 1:09 pm 
Не в сети
студент

Зарегистрирован: Сб сен 06, 2014 3:12 pm
Сообщений: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
pablov, а ты вместо debug используй MessageRequester

[code]MessageRequester("Title", "Unescape String: " + UnescapeString(String))[/code]


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

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


Кто сейчас на форуме

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


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB