Cadenas de Caracteres.
Es una secuencia ordenada de longitud arbitraria
(no infinita) de elementos que pertenecen a cierto alfabeto, generalmente es
una sucesión de caracteres (letras, números, u otros signos o símbolos), con
los que se pueden formar palabras o cualquier tipo de información.
En C#, es una matriz de caracteres que
se declara utilizando la palabra String que pertenece a la clase System, los
Strings siempre se colocan entre comillas (“ ”), ya que esto significa una
cadena de texto constante, en cambio las comillas simples de un char(‘ ‘) representan un único carácter.
La manera de declarar una cadena es:
Ø string<nombre_de_la_cadena>;
La manera de declarar una cadena con
datos predefinidos es:
Ø string<nombre_de_la_cadena>
= “Hola”;
Llevándolo hasta lo más simple, una
cadena de texto es una secuencia de caracteres, tales como:
Ø “Mi nombre
es David”
Ø “Los gatos
tienen 7 vidas”
Ø “Son $
375, al 35% de interés”
Al momento de programanar, estas
cadenas se pueden restringir a un tipo de dato determinado, si no se colocan
restricciones al alfabeto una cadena esta podrá estar formada por cualquier
combinación finita de todos los caracteres disponibles (letras de la ‘a’ a la
‘z’ o de la ‘A’ a la ‘Z’, los números del 0 al 9, el espacio en blanco,
símbolos diversos como:!,#, $, €, &, etc.
Bajo este mismo ámbito, podría decirse
que se trata de un tipo en particular de vector, de hecho son vectores de char, se utilizan normalmente como un
tipo de dato predefinido, para palabras, frases o cualquier otra sucesión de
caracteres que se almacenan en un vector de datos, o matriz de datos de una
sola fila (es como un tipo de Arreglo Unidimensional o Array en inglés).
Manejo de
caracteres
Se puede definir como un conjunto de
métodos y sentencias que nos permite operar (reconocer, transformar, verificar,
comparar, etc.) con los caracteres de una cadena de texto, entre estos
conjuntos de métodos encontramos los más comunes como son:
ToLower(
): Transforma todos los caracteres de una cadena a minúsculas.
Ej:
stringstr = "MUESTRA
DE TEXTO";
str = str.ToLower();
Console.WriteLine(str);
// devuelve el contenido de str en minúsculas "muestra de
texto".
ToUpper(
): Transforma todos los caracteres de una cadena a minúsculas.
Ej:
stringstr = "muestra
de texto";
str
= str.ToUpper();
Console.WriteLine(str);
// devuelve el
contenido de str en mayúsculas "MUESTRA DE TEXTO".
Operaciones.
Las operaciones con cadenas es uno de los aspectos
principales en la programación, entre las básicas tenemos.
Ø Asignar: Es lo más básico en lo que a
operaciones se refiere, pues colocamos un dato o valor dentro de nuestra
cadena.
Ø Buscar SubCadenas: Es encontrar una
sección o una cadena más pequeña dentro de una cadena de mayor longitud.
Ø Cambiar letras: podemos cambiar los
caracteres alfabéticos de mayúscula a minúscula y viceversa.
Ø Concatenar: Es básicamente juntar dos
cadenas para formar una cadena nueva.
Ø Reemplazar Caracteres: Es buscar una
subcadena dentro de un string y reemplazarlo por una cadena nueva.
Ø Obtener Longitud: Nos informa acerca
del tamaño de la cadena.
Ø Comparar: Es verificar si una cadena es
igual a otra o no.
Ø Búsqueda: Es buscar una cadena dentro
de otra cadena.
Ø Dividir Cadenas: Es separar los
elementos de una cadena para asignarlos cada uno a un vector, para esto se
tiene que asignar un delimitador.
Cálculo de Longitud
Se utiliza la propiedad Length, lo que
hace esta propiedad es simplemente contar cada carácter de la cadena desde el
índice 0, que es donde comienza hasta llegar al final de la misma.
Ejemplo:
stringstr;
intintLongitud;
Console.Write("Ingresecaracteres:
");
str = Console.ReadLine();
intLongitud
= str.Length;
Console.WriteLine("La
longitud de la cadena es: "+ intLongitud);
// Devuelve el valor de la longitud de
la cadena
Comparación de cadenas
Existen diferentes formas de comparar cadenas,
pero al momento de hacerlo, se generara un resultado que indicará si una cadena
es mayor o menor que otra o que las dos son iguales.Las reglas por las que se
determina el resultado son distintas dependiendo de que se realice una
comparación ordinal o una comparación dependiente de la referencia cultural.
Los
dos valores de referencia cultural de una aplicación de Visual Basic o Visual
C# determinan qué recursos se cargan para una aplicación y cómo se da formato a
información como divisa, números y fechas.
Es importante utilizar el tipo
correcto de comparación para cada tarea concreta.
Operadores (
==, != )
Es la manera más sencilla de comparar
cadenas,realizan una comparación distinguiendo entre mayúsculas y minúsculas.
string cadena1 = "Rojo";
string cadena2 = "Verde";
string cadena3 = "Rojo";
if (cadena1 == cadena3)
Console.WriteLine("Iguales");
if (cadena1 != cadena2)
Console.WriteLine("Diferentes");
Equals();
Sirve para determinar de manera
sencilla si dos cadenas son iguales, distingue entre mayúsculas, minúsculas,
caracteres y espacios, devuelve un valor de tipo bool (True o False), se puede
usar desde una clase existente o como método estático.
// Desde una clase existente:
stringejEqual = "Mi
texto en pantalla";
Console.WriteLine(ejEqual.Equals("Mi
texto en pantalla"));
// Valor devuelto: True
// Como método estático:
string ejEqual1 = "Mi
texto en pantalla";
string ejEqual2 = "Otro
texto en pantalla";
Console.WriteLine(String.Equals(ejEqual1,
ejEqual2));
// Valor devuelto: False
Compare( );
Éste es un método estático
sobrecargado de la clase de cadena base. En su forma más común, este método
puede utilizarse para comparar directamente dos cadenas basándose en el orden
alfabético.
Compara dos objetos String
especificados y devuelve un entero que indica su posición relativa en el
criterio de ordenación.Esa comparación la devuelve en un int, el cual puede tener uno de tres valores:
Ø 1.- La cadena 2 (ord2), se encuentra antes alfabéticamente que la
cadena 1 (ord1).
Ø 0.- Las dos cadenas se encuentran en el mismo
orden alfabético.
Ø -1.- La
cadena 1 (ord1), se
encuentra antes alfabéticamente que la cadena 2(ord2).
Ej:
string
ord1 = "Alfabético";
string
ord2 = "Orden";
int resultado;
resultado = string.Compare(ord1,
ord2);
Console.WriteLine(resultado);
// Valor devuelto: -1
CompareOrdinal( ):
Realiza una comparación de cadenas
basada en ASCII, mayúsculas y minúsculas.
La finalidad principal del método
CompareOrdinal es que se utilice para la ordenación o clasificación de cadenas.
El método CompareOrdinal no debe utilizarse para comprobar la igualdad (es
decir, para buscar explícitamente un valor devuelto que sea 0 sin tener en
cuenta si una cadena es menor o mayor que otra).
Este método devuelve valores int, los que pueden ser:
Ø Positivos.- La cadena 1, viene después que la
cadena 2 en el código ASCII.
Ø 0.- Las cadenas son idénticas.
Ø Negativos.- La cadena 1, se encuentra antes que
la cadena 2 en el código ASCII.
La cantidad de números determinan la
distancia que hay entre una cadena a otra en el código ASCII.
Ej:
string compOr1 = "Probando
C#";
string compOr2 = "C#
Prueba";
Console.WriteLine(string.CompareOrdinal(compOr1,
compOr2));
// Valor devuelto: 13
CompareTo( ):
Pertenece a la clase System.String, devuelve
un valor entero, basado en si un objeto, en este caso unacadena es menor que
(<) o mayor que (>) otra. De forma similar al Compare, devuelve la
comparación en un int, el que puede
tener uno de tres valores:
Ø 1.- Si el
objeto que invoca al método es mayor al objeto que se pasa por argumento.
Ø 0.-Si los
objetos son iguales.
Ø -1.- Si el
objeto que invoca al método es menor al objeto que se pasa por argumento.
Al comparar las cadenas, se utiliza el
valor Unicode, y lasminúsculas tienen un valor menor que las mayúsculas.
Comparala cadena que encapsula el
objeto de cadena actual con otra cadena u objeto. Los valores devueltos de este
método son idénticos a los que devolvía el método Compare.
La
finalidad principal del método CompareTo es que se utilice para la ordenación o
clasificación de cadenas. El método CompareTo no debe utilizarse para comprobar
la igualdad (es decir, para buscar explícitamente un valor devuelto que sea 0
sin tener en cuenta si una cadena es menor o mayor que otra).
Ej:
string
compTo1 = "DAVID";
string
compTo2 = "David";
int res = compTo1.CompareTo(compTo2);
if (res > 0)
Console.WriteLine("Mayor
que");
elseif (res < 0)
Console.WriteLine("Menor
que");
else
Console.WriteLine("Es
igual");
// En este caso devuelve: 1 que es
Mayor que.
Ej.
int
num1 = 5787,
num2 = 5788,
comp;
comp =
num1.CompareTo(num2);
Console.WriteLine(comp);
// Valor devuelto -1
StartWith y EndWith
StartWith
Se puede usar para determinar si un
objeto de cadena comienza con los mismos caracteres que forman otra cadena,
este método distingue entre mayúsculas y minúsculas. Devuelven valores bool,
true si el objeto de cadena actual comienza con la cadena que se pasa y false
si no lo hace.
// Ejemplo StartWhith False
stringstrFalse1 = "Hola
a todos, alumnos del grupo 2";
stringstrFalse2
= "Hello to all, students of the class 2";
Console.WriteLine(strFalse1.StartsWith(strFalse2));
// Valor devuelto: False.
// Ejemplo StartWhith True
string strTrue1 = "Hola
a todos, alumnos del grupo 2";
string
strTrue2 = "Hola a todos";
Console.WriteLine(strTrue1.StartsWith(strTrue2));
// Valor devuelto: True.
EndWith
Compara la cadena que se pasa con los
caracteres del final del objeto de cadena actual. También devuelve un valor
booleano.
// Ejemplo EndWhith False
string strFalse1 = "Hola
a todos, alumnos del grupo 2";
string
strFalse2 = "Hola a todos";
Console.WriteLine(strFalse1.EndsWith(strFalse2));
// Valor devuelto: False.
// Ejemplo EndWhith True
string strTrue1 = "Hola
a todos, alumnos del grupo 2";
string
strTrue2 = "grupo 2";
Console.WriteLine(strTrue1.EndsWith(strTrue2));
// Valor devuelto: True.
IndexOf y LastIndexOf
Estos métodos distinguen entre
mayúsculas y minúsculas, realizan un conteo desde la primera posición de la
cadena (índice 0) hasta llegar a su objetivo, devuelven valores tipo int.
IndexOf
Determina la posición de la primera
aparición de un carácter concreto dentro de la cadena. Cuenta desde el inicio y
devuelve la posición del carácter que se pasa. Si no encuentra el carácter
devuelve -1.
LastIndexOf
Es similar al IndexOf, con la
diferencia que devuelve la posición de la última instancia de un carácter concreto
en la cadena.
Ejemplos:
// IndexOf
stringstrIndxOff = "Hola
a todos";
Console.WriteLine(strIndxOff.IndexOf('o'));
// Valor devuelto: 1
//
LastIndexOf
stringstrIndxOff
= "Hola a todos";
Console.WriteLine(strIndxOff.LastIndexOf('o'));
// Valor devuelto: 10
Concatenación:
Concatenar es unir o anexar una
secuencia a otra.
Operador ( + )
Es la manera más sencilla de
concatenar, debido que posee una sobrecarga nos permite hacer sumas aritméticas
así como también concatenaciones.
Ejemplo:
stringuserName;
string
date = DateTime.Today.ToShortDateString();
Console.Write("Ingrese su
nombre: ");
userName =
Console.ReadLine();
stringstr
= "Hola " + userName + ". Hoy es " + date + ".";
System.Console.WriteLine(str);
str += " como
estas el día de hoy?";
System.Console.WriteLine(str);
Concat
1. De manera
similar que el operador ( + ), realiza una concatenación de cadenas para formar
una nueva.
Ejemplo:
stringaStr = "A",
bStr = "B",
cStr = "C",
dStr = "D";
stringresultado;
resultado = string.Concat(aStr,
bStr, cStr, dStr);
Console.WriteLine(resultado);
// Devuelve como resultado la
concatenación de todos los string.
2. Concatena
elementos en una matriz String especificada.
Ejemplo:
// Hacemos un arreglo de cadenas,
incluyendo los espacios en las palabras.
string[] s = { "Hola
", "y ", "bienvenido ", "a
", "esta ", "demostración! " };
// Coloca todas las cadenas juntas
Console.WriteLine(string.Concat(s));
Extracción de SubCadenas.
Mediante los métodos IndexOf,
Substring y la propiedad Length se pueden extraer datos de una cadena sin
afectar su integridad.
Ejemplo:
string palabra = "Esto
es para probar"; // Frase inicial
string sacar = "para";
// Palabra a sacar
string recupero; //espacio para
almacenar
int inicio, final; // punto de
inicio y final
inicio = palabra.IndexOf(sacar); // obtencion punto de inicio
final = sacar.Length; //
obtención punto final
recupero = palabra.Substring(inicio, final);
// extraigo la cadena con substring
Insertar caracteres:
Básicamente es la acción de insertar una cadena nueva
dentro de otra cadena, para esto necesitamos de un índice que indique el lugar
desde dónde se insertará la nueva cadena.
Insert ( ):
Inserta una cadena dentro de otra.
Sintaxis:
<Cadena original> = <Cadena original>
.Insert(intIndexOf, “Nueva cadena”;
Ejemplo:
stringstrInsert = "Este
es un texto de prueba";
strInsert
= strInsert.Insert(5, "Introductorio ");
Console.WriteLine(strInsert);
// Devuelve la cadena con la nueva
cadena anexada.
Borrado de Cadenas:
Mediante (“ ”):
Es la forma más sencilla de borrar una cadena completa,
lo que hace es reemplazar su contenido por un espacio en blanco.
Ejemplo:
StringstrLleno = "Este
es un texto de prueba";
strLleno = "";
// Devuelve la cadena vacía
Empty:
Este método representa la cadena vacía, este campo es de
solo lectura y no lleva parámetros porque no son invocables.
Ejemplo:
stringstrEmpty = "Este
es un texto de prueba";
strEmpty = string.Empty;
// Devuelve la cadena vacía
Trim( ):
Borra todos los espacios en blanco al
inicio y al final de la una cadena determinada.
Ejemplo:
stringstrTexto
= "
de borrado ";
stringstrCont;
strCont = "Proceso " + strTexto + " de cadenas";
Console.WriteLine(strCont);
stringstrTrim
= strTexto.Trim();
strCont = "Proceso
" + strTrim + " de cadenas";
Console.WriteLine(strCont);
// Devuelve vacíos los extremos de la
cadena strTexto
Remove():
Remove(intstartIndex, intlength): Elimina
todos los caracteres de la cadena, a partir de una posición especificada hasta la
última posición o hasta una posición especificada.
intstartIndex.- Posición de base cero a partir de la cual
comienza la eliminación de caracteres.
intlength.- Número
de caracteres que se van a eliminar.
Sintaxis:<Nombre
de la variable> .Remove(<Posición de inicio>, <Posición final>);
Ej:
Stringstr = "Muestra de
texto", str1;
str1 =
str.Remove(0,8);
Console.WriteLine(str1);
// Elimina todos los caracteres después de la
posición 0 hasta la 9, Valor devuelto, "de texto"
// M u e s t r a <espacio>d e ...
//
1 2 3 4 5 6 7 8 9 10...
Cambio de Cadena.
Cambiaruna cadena es modificar
todo su contenido o solo parte del mismo, la más común es reasignándole un
nuevo valor en determinado momento del programa, y en otras ocasiones cambiando
parte de su contenido buscando caracteres en específico o como una cadena es
similar a un vector unidimensional debemos de trabajar mediante índices.
MetodoReplace
Replace(
):
Este método se lo puede utilizar siempre y cuando deseamos remplazar un
carácter o una cadena de caracteres por otra. Se reemplazarán todos los
caracteres encontrados.
Sintaxis:
<Nombre de variable> .Replace (<Caracteres antiguos>, <Caracteres
nuevos>)
Ejemplo:
stringstr
= "Muestra di tixto", str1;
str1 = str.Replace("di
tixto", "de prueba");
Console.WriteLine(str);
Console.WriteLine(str1);
// Devuelve: “Muestra de prueba"
Clase StringBuilder
Sytem.Text.StringBuilder,
funciona de manera similar a String pero permite la modificación de sus cadenas
en tanto que estas no se comparten en memoria. Para crear objetos de este tipo
basta pasar como parámetro de su constructor el objeto String que contiene la
cadena a representar mediante un StringBuilder, y para convertir un
StringBuilder en String siempre puede usarse su método ToString() heredado de
System.Object.
La clase StringBuilder crea un
búfer de cadena que proporciona un mayor rendimiento si el programa realiza
muchas manipulaciones de cadenas. La cadena StringBuilder también permite
reasignar los caracteres individuales, algo que el tipo de datos String
integrado no admite.
Ejemplo:
System.Text.StringBuildersb = newSystem.Text.StringBuilder("Rat:
ideal pet");
sb[0] = 'C';
System.Console.WriteLine(sb.ToString());
System.Console.ReadLine();