Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: curiosport en 13 Enero 2016, 19:48 pm



Título: Código Fuente para Renombrar texto en Pseint.
Publicado por: curiosport en 13 Enero 2016, 19:48 pm
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.


Título: Re: Código Fuente para Renombrar texto en Pseint.
Publicado por: Eleкtro en 13 Enero 2016, 21:12 pm
Si 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
  1. public static string RenameValue(string value) {
  2.  
  3. value = value.Substring(0, value.IndexOf(' ')).Replace('.', '_');
  4. return string.Format("videos/es{0}.flv", value);
  5. }
  6.  
  7. string[] values = {
  8. "03.02 Ejercicio Lineal",
  9. "03.03 Ejercicio Aritmético",
  10. "03.03.01 Ejercicio Aritmético más complejo"
  11. };
  12.  
  13. foreach (string value in values) {
  14. Console.WriteLine(RenameValue(value));
  15. }

Vb.Net:
Código
  1. Public Shared Function RenameValue(ByVal value As String) As String
  2.  
  3.    value = value.Substring(0, value.IndexOf(" "c)).Replace("."c, "_"c)
  4.    Return String.Format("videos/es{0}.flv", value)
  5.  
  6. End Function
  7.  
  8. Dim values As String() =
  9.    {
  10.        "03.02 Ejercicio Lineal",
  11.        "03.03 Ejercicio Aritmético",
  12.        "03.03.01 Ejercicio Aritmético más complejo"
  13.    }
  14.  
  15. For Each value As String In values
  16.    Console.WriteLine(RenameValue(value))
  17. Next

Ruby:
Código
  1. # -*- coding: Windows-1252 -*-
  2.  
  3. values = [
  4. "03.02 Ejercicio Lineal",
  5. "03.03 Ejercicio Aritmético",
  6. "03.03.01 Ejercicio Aritmético más complejo"
  7. ]
  8.  
  9. def rename_value(value)
  10.    value = value[0, value.index(' ')].gsub!(".", "_")
  11.    return "videos/es%s.flv" % [value]
  12. end
  13.  
  14. for value in values
  15.   puts rename_value(value)
  16. end
  17.  
  18. __END__

Python:
Código
  1. # -*- coding: Windows-1252 -*-
  2.  
  3. values = [
  4.        "03.02 Ejercicio Lineal",
  5. "03.03 Ejercicio Aritmético",
  6. "03.03.01 Ejercicio Aritmético más complejo"
  7. ]
  8.  
  9. def rename_value(value):
  10.    value = value[0:value.index(" ")].replace(".", "_")
  11.    return "videos/es{0}.flv".format(value)
  12.  
  13. for value in values:
  14.    print rename_value(value)

También puedes utilizar reemplazamiento de string mediante expresioens regulares si lo prefieres...

Saludos!


Título: Re: Código Fuente para Renombrar texto en Pseint.
Publicado por: curiosport en 13 Enero 2016, 21:45 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.


Título: Re: Código Fuente para Renombrar texto en Pseint.
Publicado por: Eleкtro en 14 Enero 2016, 07:38 am
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.

Claro, eso era obvio, pero simplemente tienes que adaptar los ejemplos de arriba a un textbox...

Vb.Net:
Código
  1. Dim values As String() = TextBox1.Text.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)

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

saludos


Título: Re: Código Fuente para Renombrar texto en Pseint.
Publicado por: curiosport en 15 Enero 2016, 06:02 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.


Título: Re: Código Fuente para Renombrar texto en Pseint.
Publicado por: curiosport en 15 Enero 2016, 06:28 am
Olvídalo Eleкtro, ya lo logré, lo hice usando este código:

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.