Buscador Felox

Búsqueda personalizada

23 dic 2009

Fundamentos de cadenas en Visual Basic.NET


El tipo de datos String representa una serie de caracteres (que, a su vez, representan cada uno una instancia del tipo de datos Char). En este tema se presentan los conceptos básicos de las cadenas en Visual Basic.

Variables de cadena

A una instancia de una cadena se puede asignar un valor literal que representa una serie de caracteres. Por ejemplo:
Visual Basic
Dim MyString As String
MyString = "This is an example of the String data type"
Una variable String también puede aceptar cualquier expresión que se evalúe como una cadena. A continuación, se muestran algunos ejemplos:
Visual Basic
Dim OneString As String
Dim TwoString As String
OneString = "one, two, three, four, five"
' Evaluates to "two".
TwoString = OneString.Substring(5, 3)
OneString = "1"
' Evaluates to "11".
TwoString = OneString & "1"
Cualquier literal que se asigne a una variable String debe escribirse entre comillas (""). Esto significa que una comilla contenida en una cadena no se puede representar mediante una comilla. Por ejemplo, el código siguiente provoca un error del compilador:
Visual Basic
Dim myString As String

' This line would cause an error.
' myString = "He said, "Look at this example!""
Este código provoca un error porque el compilador termina la cadena después de la segunda comilla, y el resto de la cadena se interpreta como código. Para solucionar este problema, Visual Basic interpreta dos comillas en un literal de cadena como una comilla en la cadena. En el ejemplo siguiente se muestra la forma correcta de incluir una comilla en una cadena:
Visual Basic
' The value of myString is: He said, "Look at this example!"
myString = "He said, ""Look at this example!"""
En el ejemplo anterior, las dos comillas que preceden la palabra Look se convierten en una comilla en la cadena. Las tres comillas al final de la línea representan una comilla en la cadena y un carácter de terminación de cadena.

Caracteres en cadenas

Una cadena puede considerarse como una serie de instancias de valores Char y el tipo String tiene funciones integradas que permiten realizar muchas manipulaciones en una cadena, similares a las permitidas por las matrices. Como toda la matriz en .NET Framework, éstas son matrices basadas en cero. Puede hacer referencia a un carácter específico de una cadena con la propiedad Chars, que proporciona una forma de acceso a un carácter mediante la posición en la que éste aparece en la cadena. Por ejemplo:
Visual Basic
Dim myString As String = "ABCDE"
Dim myChar As Char
' The value of myChar is "C".
myChar = myString.Chars(3)
En el ejemplo anterior, la propiedad Chars de la cadena devuelve el cuarto carácter de la cadena, el carácter D, y lo asigna a myChar. También puede obtener la longitud de una cadena concreta mediante la propiedad Length. Si necesita realizar varias manipulaciones de tipo de matriz en una cadena, puede convertirla en una matriz de instancias de Char usando la función ToCharArray de la cadena. Por ejemplo:
Visual Basic
Dim myString As String = "abcdefghijklmnop"
Dim myArray As Char() = myString.ToCharArray
La variable myArray contiene ahora una matriz de instancias Char, que representan, cada una de ellas, un carácter de myString.

La inmutabilidad de las cadenas

Una cadena es inmutable, lo que significa que su valor no se puede cambiar una vez que ha sido creado. Sin embargo, esto no impide que se asigne más que un valor a una variable de cadena. Considere el ejemplo siguiente:
Visual Basic
Dim myString As String = "This string is immutable"
myString = "Or is it?"
Aquí, se crea una variable de cadena, se le da un valor y, a continuación, se cambia su valor.
Más específicamente, en la primera línea, se crea una instancia de tipo String y se le asigna el valor This string is immutable. En la segunda línea del ejemplo, se crea una nueva instancia y se le da el valor Or is it?, y la variable de cadena descarta su referencia a la primera instancia y almacena una referencia a la nueva instancia.
A diferencia de otros tipos de datos intrínsecos, String es un tipo de referencia. Cuando se pasa una variable de tipo de referencia como un argumento a una función o subrutina, se pasa una referencia a la dirección de memoria donde se almacenan los datos en lugar del valor real de la cadena. Así, en el ejemplo anterior, el nombre de la variable sigue siendo el mismo, pero apunta a una nueva instancia diferente de la clase String, que contiene el nuevo valor.

No hay comentarios:

Publicar un comentario