루비에 string.startswith (“abc”) 메소드가 내장되어 있습니까?


답변:


339

그것은라고 String#start_with?하지 String#startswith: 루비, 부울 틱 방법의 이름으로 끝나는 ?및 방법 이름에 단어는 구분된다 _. s개인적으로 어디로 갔는지 확실하지 않지만 String#starts_with?실제보다 선호 합니다.String#start_with?


9
Matz는 2 인칭 단수형 또는 3 인칭 복수형처럼 보이기 때문에 s없이 선호한다고 말했다.
앤드류 그림

5
문자열 #start_with? ruby 1.8.7 및 1.9.0에서 도입되었습니다-이전 버전의 경우 다른 답변에서 언급 한 정규식 또는 색인 버전 중 하나를 사용하려고 할 수 있습니다.
Hamish Downer

3
Rails에서 String # starts_with를 사용할 수 있습니까?
Abdo

3
@anthropomorphic github.com/rails/rails/blob/… ; String # start_with의 별칭입니까?
Abdo

10
@AndrewGrimm "문자열"은 3 인칭 단수라는 유일한 문제! (Ergo, 's'가 삭제되지 않아야합니다.)
user456584

41

질문 제목과 질문 본문이 다릅니다. 루비 에는 starts_with가 없습니까? 방법. 레일 루비 인 프레임 워크 , 그러나 않습니다 sepp2k 상태로. 설명서에 대한 링크는 답변에 대한 그의 의견을 참조하십시오.

그래도 항상 정규 표현식을 사용할 수 있습니다.

if SomeString.match(/^abc/) 
   # SomeString starts with abc

^ 정규식에서 "문자열의 시작"을 의미


"Ruby에는 starts_with 메서드가 없습니다. 레일이 있습니까?"라는 의미로 subject + bods 조합을 사용했습니다.
sepp2k

@ sepp2k,하지만 ?제목은)
Nakilon

문자열에 start_with가 있습니까? 루비 1.9부터 ( eigenclass.org/hiki/Changes+in+Ruby+1.9#l124 )
steenslag

4
@steenslag-ruby 1.8.7에도 start_with가 있습니까? - 문서1.8.7 릴리스 노트
해미 다우 너

문자열 리터럴로 정규 표현식을 작성할 때주의하십시오-특수 문자를 피하십시오. 문자열 리터럴을 예측할 수 있음 Fi 접속하는 기능이있다
라두 Simionescu

17

이것이 Rails 이외의 프로젝트 인 경우 String#index다음을 사용합니다 .

"foobar".index("foo") == 0  # => true

9
그러나이 start_with?방법을 사용하면 문자열의 시작 부분이 주어진 문자열과 일치하는지 확인할 수 있으므로 ( n 은 주어진 문자열의 길이 인 n 개 이하의 최대 n 개의 문자 를 처리 함) 검색 할 수 있어야합니다. 전체 기본 문자열 실패한 경우, 하나의 액세스 (문자열 당) 및 비교를 수행하는 반면 , 기본 문자열의 전체 길이를 거의 걸을 수 있습니다. indexstarts_with?index
OldPeculier

5

사용할 수 있습니다 String =~ Regex. 문자열에서 정규식 일치의 위치를 ​​반환합니다.

irb> ("abc" =~ %r"abc") == 0
=> true
irb> ("aabc" =~ %r"abc") == 0
=> false

가능할 때마다 //대신 사용 %r하십시오.
Cyoce
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.