Código Fuente para Renombrar texto en Pseint.

Iniciado por curiosport, 13 Enero 2016, 19:48 PM

0 Miembros y 1 Visitante están viendo este tema.

curiosport

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.

Eleкtro

#1
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#:
Código (csharp) [Seleccionar]
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:
Código (vbnet) [Seleccionar]
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:
Código (ruby) [Seleccionar]
# -*- 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:
Código (python) [Seleccionar]
# -*- 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!








curiosport

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.

Eleкtro

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:
Código (vbnet) [Seleccionar]
Dim values As String() = TextBox1.Text.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)

C#:
Código (csharp) [Seleccionar]
string[] values = TextBox1.Text.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries);

saludos








curiosport

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.

curiosport

#5
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.