2010-06-20 3 views
0

Допустим, у меня есть этот блок:Проблема преобразования блок строки в буфер обмена, когда есть символ^в Rebol

Yuml-Output-List: [ {note: Wordpress Profiles{bg:beige} 
[Blogger]^[User] 
[Admin]^[Blogger] 
[Author]^[Blogger] 
[Subscriber]^[User] 
} 

{note: Blogger Role{bg:beige} 
[Blogger]-(Manage Posts) 
} 

{note: Admin Roles{bg:beige} 
[Admin]-(Manage Site) 
(Manage Site)>(Manage Users) 
(Manage Site)>(Manage Themes) 
(Manage Site)>(Manage Plugins) 
} 

] 

Если я хочу, чтобы скопировать результат в буфер обмена с этим:

clipboard: copy "" 
foreach element Yuml-Output-List [ 
append clipboard element 
append clipboard newline 
append clipboard newline 
] 
write clipboard:// clipboard 

я получаю ESC символ вместо ^:

note: Wordpress Profiles{bg:beige} 
[Blogger]ESCUser] 
[Admin]ESCBlogger] 
[Author]ESCBlogger] 
[Subscriber]ESCUser] 


note: Blogger Role{bg:beige} 
[Blogger]-(Manage Posts) 


note: Admin Roles{bg:beige} 
[Admin]-(Manage Site) 
(Manage Site)>(Manage Users) 
(Manage Site)>(Manage Themes) 
(Manage Site)>(Manage Plugins) 

Итак, как г и избавился от выхода выхода?

ответ

1

Поскольку это строка REBOL, символ^[представляет символ ESC, поскольку^используется для escape-последовательностей.

Итак, что вы хотите сделать, это заменить существующий ESC символ с кареткой и левой скобки, например так:

replace/all source "^[" "^^["

Обратите внимание на ^^, как вам нужно, спасаясь от ^, и левая скобка теперь больше не сбегает.