Pues eso… que en un proyecto DLL (biblioteca de clases) para Windows Store no me ha reconocido ciertas funciones de manipulación de cadenas que están definidas en el módulo Strings del espacio de nombres Microsoft.VisualBasic (que es como si dijéramos el "runtime" de Visual Basic para .NET).
Lo de presuntamente es por si he hecho algo mal y por eso no me reconocía algunas funciones… al menos en un proyecto del tipo biblioteca de clases (class library), en la figura 1 tienes las cosas que se pueden usar de ese módulo con las funciones de cadena.
Figura 1. Las funciones que muestra Strings en un proyecto del tipo Class library para Windows store
Nota:
En una aplicación para Windows Store (no una librería de clases) también muestra los mismos métodos. En una aplicación/librería para el escritorio (incluso de Windows 8) muestra las que estamos habituados a usar.
Así que… me las he tenido que fabricar, al menos las que me han hecho falta para este caso concreto, que no es otro que una actualización de mi librería (perdón, biblioteca) para colorear código: gsColorearCodigo.
Aquí te dejo un módulo de Visual Basic para hacer las conversiones… lo mismo ya tenía algo publicado sobre algo parecido, pero…
'------------------------------------------------------------------------------ ' VBStrings (01/Ene/13) ' ' Para simular las funciones de cadena de Visual Basic ' ya que parece que el runtime para Windows Store no incluye algunas funciones ' ' ©Guillermo 'guille' Som, 2013 '------------------------------------------------------------------------------ Option Strict On Option Infer On Public Module VBStrings ''' <summary> ''' Devuelve la posición (en base 1) de cadena1 en cadena2 ''' </summary> ''' <remarks></remarks> Public Function InStr(cadena1 As String, cadena2 As String) As Integer Try Dim i = cadena1.IndexOf(cadena2) Return i + 1 Catch ex As Exception Return 0 End Try End Function ''' <summary> ''' Devuelve la posición en base 1 de cadena1 en cadena2 ''' se comprueba a partir de la posición desde ''' </summary> ''' <remarks></remarks> Public Function InStr(desde As Integer, cadena1 As String, cadena2 As String) As Integer Try Dim i = cadena1.IndexOf(cadena2, desde - 1) Return i + 1 Catch ex As Exception Return 0 End Try End Function ''' <summary> ''' Devuelve una cadena con los cuantos primeros caracteres de cadena1 ''' El primer caracter es el 1 y se devuelve en base 1 ''' </summary> ''' <remarks></remarks> Public Function Left(cadena1 As String, cuantos As Integer) As String If String.IsNullOrWhiteSpace(cadena1) OrElse cuantos < 1 Then Return "" End If Dim s = cadena1.Substring(0, cuantos - 1) Return s End Function ''' <summary> ''' Devuelve la cantidad de caracteres que tiene cadena1 ''' </summary> ''' <remarks></remarks> Public Function Len(cadena1 As String) As Integer If String.IsNullOrWhiteSpace(cadena1) Then Return 0 End If Return cadena1.Length End Function ''' <summary> ''' Devuelve una cadena nueva después de quitarle ''' los espacios del principio y del final ''' </summary> ''' <remarks></remarks> Public Function Trim(cadena1 As String) As String If String.IsNullOrWhiteSpace(cadena1) Then Return "" End If Return cadena1.Trim() End Function ''' <summary> ''' Devuelve una cadena a partir de la posición desde ''' La pirmera posición es la 1 ''' </summary> ''' <remarks></remarks> Public Function Mid(cadena1 As String, desde As Integer) As String If String.IsNullOrWhiteSpace(cadena1) OrElse desde < 1 Then Return "" End If Return cadena1.Substring(desde - 1) End Function ''' <summary> ''' Devuelve una cadena con cuantos caracteres de cadena1 ''' a partir de desde ''' La primera posición es la 1 ''' </summary> ''' <remarks></remarks> Public Function Mid(cadena1 As String, desde As Integer, cuantos As Integer) As String If String.IsNullOrWhiteSpace(cadena1) OrElse desde < 1 Then Return "" End If Return cadena1.Substring(desde - 1, cuantos) End Function ''' <summary> ''' Trocea una cadena usando los caracteres indicados ''' </summary> ''' <remarks></remarks> Public Function Split(cadena1 As String, caracteres As String) As String() Return cadena1.Split(caracteres.ToCharArray, StringSplitOptions.RemoveEmptyEntries) End Function End Module
Espero que te sea de utilidad.
Nos vemos.
Guillermo
…
Un saludo Guille desde Venezuela. Contarte que algo parecido me paso, pero esta vez fue cuando quise migrar un código de VB a C#. Eso lo hice a mano que sino…:). En fin que tuve que apañarmelas y fabricar algunas funciones equivalentes yo mismo. Otras las busqué en tu sitio que hay algo publicado bien completo por cierto. Casi siempre uso esas funciones en detrimento de las nativas de VB. Cosas de uno supongo. Un abrazo… Cristyan Valera. Guanare, Ven.
sÃ, algunas veces nos toca a nosotros hacernos la vida más fácil… y eso no es reinventar la rueda… si no hacerla más redonda 😉