Hola a todos
Mi objetivo es lograr una transformación de varias líneas de texto, por darles unos ejemplos:
Este es el texto que ingreso:
03.02 Ejercicio Lineal
03.03 Ejercicio Aritmético
03.03.01 Ejercicio Aritmético más complejo
Y quiero que me imprima esto:
videos/es03_02.flv
videos/es03_03.flv
videos/es03_03_01.flv
Si se fijan bien, el punto cambió a guión bajo, y el resto de texto desapareció.
El uso que le voy a dar a esto es para generar link's de varios videos que tengo.
Algunos me dirán que porque no solo ingreso los números y así el proceso será más sencillo, el problema es que la lista de nombres que tengo es bien larga y tendría que borrar de uno en uno para así poder seleccionar solo los números.
Si no es posible en Pseint démenlo en cualquier otro lenguaje de programación pero que pueda usarlo.
Gracias, espero que me puedan ayudar.
Cita de: curiosport en 13 Enero 2016, 19:48 PMSi no es posible en Pseint démenlo en cualquier otro lenguaje de programación pero que pueda usarlo.
Es algo simple que puedes hacer en practicamente cualquier lenguaje... te muestro unos ejemplos:
C#:
public static string RenameValue(string value) {
value = value.Substring(0, value.IndexOf(' ')).Replace('.', '_');
return string.Format("videos/es{0}.flv", value);
}
string[] values = {
"03.02 Ejercicio Lineal",
"03.03 Ejercicio Aritmético",
"03.03.01 Ejercicio Aritmético más complejo"
};
foreach (string value in values) {
Console.WriteLine(RenameValue(value));
}
Vb.Net:
Public Shared Function RenameValue(ByVal value As String) As String
value = value.Substring(0, value.IndexOf(" "c)).Replace("."c, "_"c)
Return String.Format("videos/es{0}.flv", value)
End Function
Dim values As String() =
{
"03.02 Ejercicio Lineal",
"03.03 Ejercicio Aritmético",
"03.03.01 Ejercicio Aritmético más complejo"
}
For Each value As String In values
Console.WriteLine(RenameValue(value))
Next
Ruby:
# -*- coding: Windows-1252 -*-
values = [
"03.02 Ejercicio Lineal",
"03.03 Ejercicio Aritmético",
"03.03.01 Ejercicio Aritmético más complejo"
]
def rename_value(value)
value = value[0, value.index(' ')].gsub!(".", "_")
return "videos/es%s.flv" % [value]
end
for value in values
puts rename_value(value)
end
__END__
Python:
# -*- coding: Windows-1252 -*-
values = [
"03.02 Ejercicio Lineal",
"03.03 Ejercicio Aritmético",
"03.03.01 Ejercicio Aritmético más complejo"
]
def rename_value(value):
value = value[0:value.index(" ")].replace(".", "_")
return "videos/es{0}.flv".format(value)
for value in values:
print rename_value(value)
También puedes utilizar reemplazamiento de string mediante expresioens regulares si lo prefieres...
Saludos!
Cita de: Eleкtro en 13 Enero 2016, 21:12 PM
string[] values = {
"03.02 Ejercicio Lineal",
"03.03 Ejercicio Aritmético",
"03.03.01 Ejercicio Aritmético más complejo"
Gracias por la ayuda Eleкtro pero esos datos los voy a copiar y pegar en el programa cuando yo los necesite, no los quiero ingresar directamente al código fuente.
Cita de: curiosport en 13 Enero 2016, 21:45 PMGracias por la ayuda Eleкtro pero esos datos los voy a copiar y pegar en el programa cuando yo los necesite, no los quiero ingresar directamente al código fuente.
Claro, eso era obvio, pero simplemente tienes que adaptar los ejemplos de arriba a un textbox...
Vb.Net:
Dim values As String() = TextBox1.Text.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
C#:
string[] values = TextBox1.Text.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries);
saludos
Cita de: Eleкtro en 14 Enero 2016, 07:38 AM
Claro, eso era obvio, pero simplemente tienes que adaptar los ejemplos de arriba a un textbox...
Vb.Net:
C#:
saludos
Sorry, olvidé decirte que ya empecé a trabajar con Python, me gustó mucho ese código y lo hago en conjunto con ideone.com ¿podrías por favor darme el código para ingresar los datos desde python?
Desde ya, muchas gracias.
Olvídalo Eleкtro, ya lo logré, lo hice usando este código:
x=1
while x<=3:
values = [raw_input()]
def rename_value(value):
value = value[0:value.index(" ")].replace(".", "_")
return "videos/es{0}.flv".format(value)
for value in values:
print rename_value(value)
x=x+1
La razón por la que usé while es porque ideone.com solo me detecta la primera línea que ingreso en su cuadro de texto, entonces para solucionar eso hago que el proceso se repita igual al número de líneas que ingreso para renombrar.
De todos modos, no espero que lo entiendas porque no es necesario que lo hagas ;D
Al fin y al cabo, Gracias por todo.