Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: PETTETE en 18 Septiembre 2017, 14:41 pm



Título: extraer palabra de string
Publicado por: PETTETE en 18 Septiembre 2017, 14:41 pm
Hola buenas,

como puedo extraer el una palabra de un string?

ejemplo:
 1235518329429492 PEPE 8392r05935
sabiendo que empieza en el caracter 20 y termina en el 25?
 he de decir que el string es un .TXT.




Título: Re: extraer palabra de string
Publicado por: Eleкtro en 18 Septiembre 2017, 15:31 pm
Hola.

ejemplo:
 1235518329429492 PEPE 8392r05935
sabiendo que empieza en el caracter 20 y termina en el 25?

En tu ejemplo la palabra PEPE empieza en el caracter 18 y termina en el 21. . .  :¬¬

Código
  1. Dim str As String = "1235518329429492 PEPE 8392r05935"
  2. Dim substr As String = str.Substring(17, 4)
  3. Debug.WriteLine(ControlChars.Quote & substr & ControlChars.Quote)

  • String.Substring Function | MSDN (https://msdn.microsoft.com/en-us/library/system.string.substring(v=vs.110).aspx)

Para los casos en donde no sepas la posición ni la longitud de la cadena, puedes usar las funciones String.IndexOf() / String.LastIndexOf() en combinación con la propiedad String.Length, o puedes recurrir a expresiones regulares mediante la clase System.Text.RegularExpressions.Regex.

Saludos.


Título: Re: extraer palabra de string
Publicado por: PETTETE en 18 Septiembre 2017, 16:25 pm
Vale, muchas gracias.
La posicion del caracter era un ejemplo.

por cierto, como puedo insertar caracteres en medio de una fecha?
para que la fecha me quede a 10 de febrero de 2010?

solo seria insertar el " a de de" el formato de fecha ya lo he puesto.

pd, GRACIAS POR COLABORAR Y AYUDARME


Título: Re: extraer palabra de string
Publicado por: Eleкtro en 18 Septiembre 2017, 17:51 pm
como puedo insertar caracteres

Estás preguntando cosas muy básicas que solo necesitarían por tu parte dos segundos de búsqueda en Google...

  • String.Insert() Function | MSDN (https://msdn.microsoft.com/en-us/library/system.string.insert(v=vs.110).aspx)



De todas formas si tu intención es trabajar con fechas, pues mi recomendación es que utilices el tipo DateTime para representar fechas...

Código
  1. Dim ci As New CultureInfo("es-ES")
  2. ci.DateTimeFormat.MonthGenitiveNames =
  3.    (From name As String In ci.DateTimeFormat.MonthGenitiveNames
  4.     Select ci.TextInfo.ToTitleCase(name)
  5.    ).ToArray() ' Convierto la primera letra de los nombres de los meses a mayúscula.
  6.  
  7. Dim dt As DateTime = Date.Parse("10/02/2010", ci)
  8. Dim str As String = dt.ToString("dd \d\e MMMMM \d\e yyyy", ci) ' 10 de Febrero de 2010
  9.  
  10. Debug.WriteLine(str)

Saludos.


Título: Re: extraer palabra de string
Publicado por: PETTETE en 19 Septiembre 2017, 12:27 pm
Buenas,
lo primero agradecer la ayuda y lo segundo, lo que queria preguntar era lo segundo, lo de introducir caracteres en las fechas.

pero al meter otra variable cambia..
ejemplo:
si pongo este codigo, la fecha me sale : a 9 de junio de 1995
Código:
     xlhoja.cells(fila, 2).value = fecha_nacimiento
            xlhoja.cells(fila, 2).NumberFormat = " \a d \d\e MMMM \d\e yyyy"

pero al introducir variable sexo, la fecha aparece asi: nacido a 1995-06-09


Código:
  If sexo = "1" Then
                sexo_text = "nacido"
            ElseIf sexo = "2" Then
                sexo_text = "nacida"
            End If

  xlhoja.cells(fila, 2).value = sexo_text & fecha_nacimiento
            xlhoja.cells(fila, 2).NumberFormat = " \a d \d\e MMMM \d\e yyyy"


¿algún consejo?


Título: Re: extraer palabra de string
Publicado por: Eleкtro en 19 Septiembre 2017, 14:51 pm
Estoy cansado de repetir siempre lo mismo. Trata de elaborar una pregunta correctamente proporcionando los detalles más importantes por delante. Has preguntado como insertar caracteres en una fecha, no se sabía si te referías a un string tal que: "01-01-2001" o por lo contrario a formatear un objeto de tipo DateTime mediante los formatos de fecha disponibles ( https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings (https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings) ), y ahora resulta que tu pregunta en realidad tiene que ver con las APIs de interoperabilidad de Excel y la propiedad NumberFormat...

Aquí tienes la documentación oficial:
  • Microsoft.Office.Interop.Excel.Range.NumberFormat Property | MSDN (https://msdn.microsoft.com/en-us/vba/excel-vba/articles/range-numberformat-property-excel?f=255&MSPPError=-2147217396)



pero al introducir variable sexo, la fecha aparece asi: nacido a 1995-06-09
Código:
xlhoja.cells(fila, 2).value = sexo_text & fecha_nacimiento
xlhoja.cells(fila, 2).NumberFormat = " \a d \d\e MMMM \d\e yyyy"
¿algún consejo?

Bueno, yo no utilizo la API oficial de Microsoft Office, pero a simple vista no puedes esperar que la cadena de texto "nacida" o "nacido" se pueda evaluar y formatear como un formato de fecha. Prueba a escapar el string de la siguiente manera: "\n\a\c\i\d\a \e\l d \d\e MMMM \d\e yyyy", lo que en teoría debería traducirse a: "nacida el DÍA de MES de AÑO"

Tampoco sé si la propiedad NumberFormat de ese objeto COM de Excel soporta los formatos de fecha built-in de .NET Framework, habría que investigarlo, y como ya digo yo no uso la API oficial de Microsoft. Si eso no te funciona, pues puedes probar a introducir la fecha YA FORMATEADA (en mi otro post aquí arriba publiqué un ejemplo de como localizar a Español y formatear un objeto de tipo DateTime), en lugar de usar la propiedad NumberFormat para dejar que la formatee Excel.

PD:
Y aquí:
Citar
Código
  1. xlhoja.cells(fila, 2).value = fecha_nacimiento
  2. xlhoja.cells(fila, 2).value = sexo_text & fecha_nacimiento
No has mostrado la declaración de fecha_nacimiento para que podamos saber si se trata de un objeto de tipo DateTime, o por lo contrario de tipo String. No somos adivinos.

Saludos.