Tengo una cadena como esta: 00:11:40 o 00:02:40 cómo formateé para poder eliminar siempre los cero (s) iniciales y los dos puntos (colon) , por lo que se parece a esto 11:40 o 2:40cadena de formato, eliminar los caracteres iniciales
Respuesta
Llamamos a estos personajes "principales", no se arrastra, ya que son al principio, pero la expresión regular para esto es muy fácil
x.sub(/^[0:]*/,"")
Eso funciona exactamente como usted lo expresó: starti ng al comienzo de la cadena, elimine todos los 0 y: s.
EDIT: el PO quería esto desde el principio:
seconds = 11*60+40
Time.at(seconds.to_i).gmtime.strftime('%M:%S') # gives '11:40'
o ver man strftime
para más opciones de formato.
EDIT: incorporando toda la discusión, este es el enfoque recomendado. Elimina la necesidad de la llamada de tiempo también.
seconds = seconds.to_i
if seconds >= 60
"#{seconds/60}:#{seconds%60}"
else
"#{seconds}"
end
Gracias, pero necesito una forma general de hacerlo. Obtengo la cadena a través de una conversión de segundos Time.at (seconds.to_i) .gmtime.strftime ('% R:% S') –
¡Cierre! Necesito calcular cómo usar "gsub" con algunas expresiones regulares para quitar los ceros iniciales y/o los dos puntos –
se puede usar algo como Pedro dijo, pero podría correctamente ser:
s = "00:11:40"
s = s[3..-1] # 11:40
Otro enfoque sería utilizar el método split:
s = "00:11:40".split(":")[1,2].join(":")
Aunque me parece que uno más confuso y complejo.
Es posible que desee probar la expresión positiva positiva detrás de la expresión regular. Niza reference
it "should look-behind for zeros" do
time = remove_behind_zeroes("ta:da:na")
time.should be_nil
time = remove_behind_zeroes("22:43:20")
time.should == "22:43:20"
time = remove_behind_zeroes("00:12:30")
time.should == "12:30"
time = remove_behind_zeroes("00:11:40")
time.should == "11:40"
time = remove_behind_zeroes("00:02:40")
time.should == "2:40"
time = remove_behind_zeroes("00:00:26")
time.should == "26"
final
def remove_behind_zeroes(value)
exp = /(?<=00:00:)\d\d/
match = exp.match(value)
if match then return match[0] end
exp = /(?<=00:0)\d:\d\d/
match = exp.match(value)
if match then return match[0] end
exp = /(?<=00:)\d\d:\d\d/
match = exp.match(value)
if match then return match[0] end
exp = /\d\d:\d\d:\d\d/
match = exp.match(value)
if match then return match[0] end
nil
final
¡No hace falta cuatro expresiones regulares diferentes y 15 líneas de código para hacer esto! Un solo .sub (/^[0:] * /, "" funciona bien! –
Muchas veces puedes simplemente confiar en las técnicas básicas de conversión, en ruby, por ejemplo, si tienes una cadena como "05" y quieres que sea solo 5, simplemente harías "05" .to_i
- 1. Formato de valor decimal a cadena con espacios iniciales
- 2. Eliminar espacios iniciales y finales de los elementos XML
- 3. Eliminar caracteres de una cadena
- 4. Cadena de formato de 10 caracteres
- 5. cadena de formato y hexagonales caracteres
- 6. Eliminar los primeros 4 caracteres de una cadena con PHP
- 7. Eliminar todos los caracteres no ASCII de la cadena
- 8. Python Eliminar los últimos 3 caracteres de una cadena
- 9. Cómo eliminar todos los caracteres de una cadena
- 10. Eliminar los caracteres finales de la cadena en Javascript
- 11. Eliminar todos los caracteres especiales de una cadena en R?
- 12. jQuery eliminar los caracteres especiales de la cadena y más
- 13. Regex para eliminar todos los caracteres especiales de la cadena?
- 14. ¿Cómo eliminar los primeros 10 caracteres de una cadena?
- 15. PHP eliminar todos los caracteres antes de cadena específica
- 16. Compruebe si los caracteres iniciales de una cadena son alfabéticos en T-SQL
- 17. ¿Cómo eliminar caracteres inválidos de una cadena?
- 18. Eliminar ciertos caracteres de una cadena
- 19. Eliminar caracteres después de la cadena?
- 20. iPhone eliminar parcial de caracteres de cadena
- 21. ¿Cómo eliminar caracteres especiales de una cadena?
- 22. Lote para eliminar caracteres de una cadena
- 23. Eliminar caracteres de la cadena en el estándar C
- 24. NSString eliminando los ceros iniciales?
- 25. Cómo eliminar caracteres repetidos en una cadena
- 26. Eliminar todos los "caracteres de palabra" no de una cadena en Java, dejando caracteres acentuados?
- 27. eliminar los caracteres no ingleses PHP
- 28. Eliminar todos los caracteres excepto los alfabetos y los números de una cadena de Ruby
- 29. Rubí tira cadena caracteres definidos
- 30. cómo quitar los caracteres en una cadena?
Algunos de nosotros somos solo estudiantes humildes de la expresión regular, otros solo son maestros (ya has aprendido de mí). Eso es lo que sucede cuando tienes TDD a las 22:00 h. La refactorización se deja como un ejercicio. – Gutzofter
'" 00:00:23 "' da como resultado '" 23 "' que parece extraño. Pero sin ofender, esto sigue siendo exactamente lo que solicitó el OP. –