2010-07-27 4 views
0

내가 제대로 GSUB 사용하는 데 문제가 포함 된 문자열과 루비의 GSUB를 사용하여 내가 기대하는 것은 :는 " 0"

"this \0 is a test" 

어떻게합니까? 내가 원하는 결과를 얻으려고 gsub을 사용합니까?

+0

은 \ 0 전체 일치로 대체됩니다 역 참조이며, 루비 고유 아니다 . (일반적으로 \ 1, \ 2 등으로 볼 수 있습니다. \ 0은 좀더 희귀합니다.) –

+1

' '\ 0''이 작은 따옴표 안에 있으면 (보통'gsub'의 마지막 매개 변수가 보통이므로), ''\\ 0 ''또는'' '''이외의 이스케이프 시퀀스를 사용할 수 없으므로 큰 따옴표로 묶으십시오. – Adrian

답변

3

gsub"\\0"을 알 수 있도록 다른 백 슬래시로 이스케이프 처리하십시오.

"replace me".gsub(/replace me/, "this \\\\0 is a test") 

(편집) 당신이 바이트 0x00을 의미 "\0"에 의한 경우, 다음을 수행하십시오

"replace me".gsub(/replace me/, "this \0 is a test") 
+0

Nah는 "0x0"을 바이트 0x00으로 말하지 않았다. – Frank

+0

문자열'string = 'this \ 0이 test''라고 가정하고이 문자열을 gsub의 두 번째 인수로 사용하려고합니다. 'string.gsub (/ \\ /, '\\\\')'는 작동합니까? '\ 0 '이 일치로 대체되지 않도록'string'을 어떻게 이스케이프합니까? – Frank

+0

두 개의 슬래시를 사용하십시오. – Adrian