2010-11-09 12 views

Respuesta

288

Se llama String#start_with?, no String#startswith: En Ruby, los nombres de los métodos booleanos-ish terminan con ? y las palabras nombres de los métodos se separan con un _. No está seguro de dónde fue el s, personalmente, preferiría String#starts_with? sobre el actual String#start_with?

+7

Matz ha dicho que prefiere sin la s ya que se ve como segunda persona del singular o tercera persona del plural. –

+5

String # start_with? se introdujo en ruby ​​1.8.7 y 1.9.0. Para versiones anteriores, es posible que desee utilizar una de las versiones de expresiones regulares o de índice mencionadas en otras respuestas. –

+3

en Rails, puede usar String # starts_with? – Abdo

36

El título de su pregunta y el cuerpo de su pregunta son diferentes. Ruby no tiene un starts_with? método. Rails, que es un marco de Ruby , sin embargo, hace, como sepp2k. Vea su comentario sobre su respuesta para el enlace a la documentación para ello.

siempre se puede utilizar una expresión regular sin embargo:

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

^ significa "comienzo de cadena" en expresiones regulares

+0

Tomé la combinación tema + cuerpos para indicar "Ruby no tiene un método starts_with. ¿Tiene rieles?". – sepp2k

+0

@ sepp2k, pero es '?' En el título de la pregunta) – Nakilon

+0

@ sepp2k Entendido. :-) – Alex

5

Puede utilizar String =~ Regex. Devuelve la posición de la coincidencia de expresiones regulares completa en la cadena.

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

Por favor use '//' en vez de '% r' siempre que sea posible. – Cyoce

17

Si se trata de un proyecto no-carriles, que haría uso de String#index:

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

Sin embargo, esto requeriría más rendimiento, ya que un método 'start_with?' Puede simplemente confirmar que el comienzo de la cadena coincide con la cadena dada, por lo tanto procesando a lo sumo * n * caracteres donde * n * es la longitud de la cadena dada, mientras que 'index' tendrá que buscar toda la cadena base. En un caso de falla, 'starts_with?'tomará un acceso (por cadena) y una comparación, mientras que' index' recorrerá casi toda la longitud de la cadena base. – OldPeculier

Cuestiones relacionadas