이 문자열의 끝에 '/'를 단순히 추가하려고합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?Ruby에서 문자열을 추가하는 방법
>> params[:id]
"shirts"
params[:id] == "shirts/"
으로 만들고 싶습니다. 해당 문자열 끝에 /
을 어떻게 추가합니까? 이처럼
이 문자열의 끝에 '/'를 단순히 추가하려고합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?Ruby에서 문자열을 추가하는 방법
>> params[:id]
"shirts"
params[:id] == "shirts/"
으로 만들고 싶습니다. 해당 문자열 끝에 /
을 어떻게 추가합니까? 이처럼
간단한 :
params[:id] = params[:id] + '/'
또는
params[:id] += '/'
Moar 공상 :
params[:id] << '/'
또 다른 방법으로이 작업을 수행 :
,params[:id].concat '/'
당신이 정말 어떤 희한 이유로 GSUB 주장하는 경우 :
params[:id].gsub! /$/, '/'
:
params[:id] + '/' == 'shirts/'
필요 없음 GSUB :
당신이없는 경우에 후행 슬래시가있을 수 있습니다. 그런 다음 사용
params[:id] = params[:id] + '/' unless params[:id].match(/.*\/$/)
params[:id] == 'shirts/'
삽 연산자?
params[:id] << "/"
나는 params[:id] << "/"
가 작동해야한다고 생각합니다.
URL을이 방법으로 작성하려는 경우 잘못했을 가능성이 있지만 올바른 방법을 말할 수는 없습니다.
이 방법으로 디렉토리 경로를 만들고 다른 경로가있는 경우 File.join
과 같은 것을 사용하십시오. Link to the documentation
은 "베스트"사용 사례에 크게 의존하지만, 다음 코드를 고려하십시오
a = 'shirts'
b = a
params = {}
params[:id] = b
params[:id] << '/'
params[:id] #=> "shirts/"
우리가 기대하는대로를 <<
슬래시하지만 ... 추가되었습니다
a #=> "shirts/"
# a has changed too!
그래서 , 이러한 방법으로 당신의 이해 수준에 따라, 이것은 예상하지 못한 행동입니다. 비교 대상 :
params[:id] += '/'
params[:id] #=> "shirts/"
a #=> "shirts"
# a remains the same
기본적으로 일부 개체는 새 개체를 만들고 다른 개체는 기존 개체를 수정합니다. object_id 메소드로 테스트 할 수 있습니다.
str1 = 'a'
str2 = str1
str1.object_id #=> 14310680
str2.object_id #=> 14310680
# Both str1 and str2 point to the same object
지금
str1 << 'b' #=> "ab"
str1.object_id #=> 14310680
str2 #=> "ab"
우리는 성공적으로 새로운 객체를 생성하지 않고 및 STR2 여전히 같은 객체는 또한 "업데이트"를 얻는다을 가리키는 이후 str1과 수정했습니다. 마지막으로, 경우에 우리는 +=
방법 사용 : 우리가 STR1 아무것도 첨가하지 않은
str1 #=> "ab"
str1 += '' #=> "ab"
str1.object_id #=> 15078280
str2.object_id #=> 14310680
공지를하지만 여전히 새로운 객체를 생성합니다.