Se llama String#start_with?, no String#startswith: en Ruby, los nombres de los métodos booleanos terminan con ?y las palabras en los nombres de los métodos se separan con un _. No estoy seguro de dónde sfue, personalmente, preferiría String#starts_with?a lo realString#start_with?
Matz ha dicho que prefiere sin la s, ya que parece una segunda persona del singular o una tercera persona del plural.
Andrew Grimm
55
Cadena # 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.
@AndrewGrimm ¡El único problema es que "una cadena" es tercera persona del singular! (Ergo, 's' no debería haberse dejado caer).
user456584
41
El título de su pregunta y su cuerpo de preguntas son diferentes. Ruby no tiene un start_with? método. Rails , que es un marco de Ruby , sin embargo, lo hace , como sepp2k afirma. Vea su comentario sobre su respuesta para el enlace a la documentación correspondiente.
Sin embargo, siempre puedes usar una expresión regular:
ifSomeString.match(/^abc/)# SomeString starts with abc
^ significa "inicio de cadena" en expresiones regulares
cuidado al construir expresiones regulares a partir de literales de cadena: recuerde escapar de cualquier carácter especial. hay una función para eso fi los literales de cadenas pueden ser impredecibles
Radu Simionescu
17
Si esto es para un proyecto que no es de Rails, usaría String#index:
Sin embargo, esto requeriría un mayor rendimiento, ya que un start_with?método puede simplemente confirmar que el comienzo de la cadena coincide con la cadena dada, procesando así a lo sumo n caracteres donde n es la longitud de la cadena dada, mientras indexque tendrá que buscar toda la cadena base. En un caso de falla, starts_with?tomará un acceso (por cadena) y una comparación, mientras indexque caminará casi toda la longitud de la cadena base.
OldPeculier
5
Puedes usar String =~ Regex. Devuelve la posición de coincidencia de expresiones regulares completas en la cadena.
Respuestas:
Se llama
String#start_with?
, noString#startswith
: en Ruby, los nombres de los métodos booleanos terminan con?
y las palabras en los nombres de los métodos se separan con un_
. No estoy seguro de dóndes
fue, personalmente, preferiríaString#starts_with?
a lo realString#start_with?
fuente
El título de su pregunta y su cuerpo de preguntas son diferentes. Ruby no tiene un start_with? método. Rails , que es un marco de Ruby , sin embargo, lo hace , como sepp2k afirma. Vea su comentario sobre su respuesta para el enlace a la documentación correspondiente.
Sin embargo, siempre puedes usar una expresión regular:
^
significa "inicio de cadena" en expresiones regularesfuente
?
en el título de la pregunta)Si esto es para un proyecto que no es de Rails, usaría
String#index
:fuente
start_with?
método puede simplemente confirmar que el comienzo de la cadena coincide con la cadena dada, procesando así a lo sumo n caracteres donde n es la longitud de la cadena dada, mientrasindex
que tendrá que buscar toda la cadena base. En un caso de falla,starts_with?
tomará un acceso (por cadena) y una comparación, mientrasindex
que caminará casi toda la longitud de la cadena base.Puedes usar
String =~ Regex
. Devuelve la posición de coincidencia de expresiones regulares completas en la cadena.fuente
//
lugar de%r
siempre que sea posible.