루비의 문자열에서 작은 따옴표와 큰 따옴표를 이스케이프합니까?
문자열에서 작은 따옴표와 큰 따옴표를 어떻게 이스케이프 할 수 있습니까?
작은 따옴표와 큰 따옴표를 함께 이스케이프하고 싶습니다. 나는 그들을 개별적으로 통과하는 방법을 알고 있지만 둘 다 통과하는 방법을 모릅니다.
예 : str = "ruby 'on rails" " = ruby 'on rails"
내가 선호하는 방법은 이스케이프에 대해 걱정하지 않고 대신 %q
작은 따옴표 문자열 (보간 또는 문자 이스케이프 없음)처럼 작동하거나 %Q
큰 따옴표로 묶인 문자열 동작을 사용하는 것입니다.
str = %q[ruby 'on rails" ] # like single-quoting
str2 = %Q[quoting with #{str}] # like double-quoting: will insert variable
참조 https://docs.ruby-lang.org/en/trunk/syntax/literals_rdoc.html#label-Strings을 검색하십시오 % strings
.
백 슬래시를 사용하여 문자 이스케이프
str = "ruby \'on rails\" "
원하는 구분 기호를 사용할 수있는 Q 문자열을 사용할 수 있습니다.
str = %Q|ruby 'on rails" " = ruby 'on rails|
다음은 전체 목록입니다.
에서 http://learnrubythehardway.org/book/ex10.html
>> str = "ruby 'on rails\" \" = ruby 'on rails"
=> "ruby 'on rails" " = ruby 'on rails"
탈출에 대해 걱정하기 시작 하면 heredoc 과 함께 갈 것입니다 . 다음과 같이 처리됩니다.
string = <<MARKER
I don't have to "worry" about escaping!!'"!!
MARKER
MARKER는 문자열의 시작 / 끝을 나타냅니다. heredoc을 연 후 다음 줄에서 문자열을 시작한 다음 해당 줄에서 다시 구분자를 사용하여 문자열을 끝냅니다.
이것은 필요한 모든 이스케이프를 수행하고 큰 따옴표로 묶인 문자열로 변환합니다.
string
=> "I don't have to \"worry\" about escaping!!'\"!!\n"
난 그냥 사용합니다 : str = %(ruby 'on rails ")
그냥 있기 때문에 %
큰 따옴표 (또는 % Q)의 약자 문자열에 변수의 보간을 할 수 있습니다.
한 가지주의 사항 :
사용 %Q[]
하고 %q[]
문자열 비교를하는 것은 직관적으로 안전하지 않습니다.
이 같은 빈 무언가를 의미하는 의미가 무엇인가를로드하는 경우 예를 들어, ""
또는 ''
, 당신은 실제 이스케이프 시퀀스를 사용해야합니다. 예를 들어, 빈 문자열 대신 qvar
같음을 가정 해 보겠습니다 ""
.
이것은 평가할 것입니다 false
if qvar == "%Q[]"
이것처럼
if qvar == %Q[]
이것이 평가되는 동안 true
if qvar == "\"\""
다른 스택의 명령 줄 변수를 Ruby 스크립트로 보낼 때이 문제가 발생했습니다. Gabriel Augusto의 답변 만 이 저에게 효과적 이었습니다.
다음은 %Q[]
더 복잡한 시나리오에서 사용하는 방법의 예입니다 .
%Q[
<meta property="og:title" content="#{@title}" />
<meta property="og:description" content="#{@fullname}'s profile. #{@fullname}'s location, ranking, outcomes, and more." />
].html_safe
참고 URL : https://stackoverflow.com/questions/6705982/escaping-single-and-double-quotes-in-a-string-in-ruby
'Development Tip' 카테고리의 다른 글
SASS에서 속성 선택기를 어떻게 정의합니까? (0) | 2020.11.16 |
---|---|
C에서 NULL 포인터를 해제하는 것이 좋은 습관입니까? (0) | 2020.11.16 |
RailwayJS 대 TowerJS (0) | 2020.11.16 |
Composer의 자동로드 사용 (0) | 2020.11.16 |
LINQ to 엔터티에서 LEFT JOIN? (0) | 2020.11.16 |