Los objetos de cadena son inmutables, lo que significa que no se pueden cambiar una vez creados. Los métodos que actúan sobre las cadenas, devuelven los nuevos objetos de cadena.
Una cadena se considera un tipo de datos tanto en java (String) y C# (string y String) que puede tener la habilidad de contener diferentes tipos de datos como: char, double, int, entre otros.
string nombre = "Luis Alberto Ochoa"; int edad = 22; string cadena = "Nombre: " + nombre + " Edad: " + edad;
Tipo de dato string
El tipo de dato string que nos ofrece C# no es primitivo puesto que hace referencia a la clase String, esto quiere decir que C# reconoce la palabra clave string y la traslada a la clase System.String incluyendo las operaciones como la secuencia y copia de cadenas.
using System;
namespace Cadenas
{
class Cadena
{
public static void Main(string[] args)
{
string hola = "Hola ";
string mundo = "mundo!!!";
string saludo = hola + mundo;
System.Console.WriteLine(saludo);
}
}
}$ gmcs Cadena.cs $ mono Cadena.exe Hola mundo!!!
System.String
La clase String esta diseñada específicamente para almacenas cadenas y permitir un gran número de operaciones dentro de una cadena. Para realizar alguna tareas comunes la clase String contiene 19 métodos:
Puedes probar los ejemplos con tan solo copiar el código dentro del método Main.
1 Compare
Compara el contenido de las cadenas tomando en cuenta la configuración local (Culture)
// Compare
string cadena1 = "Hola";
string cadena2 = "hola";
if (String.Compare(cadena1, cadena2) == 0)
Console.WriteLine("Las cadenas son iguales");
else
Console.WriteLine("Las cadenas son distintas");Las cadenas son distintas
2 CompareOrdinal
Compara las cadenas sin tomar en cuenta la configuración local (Culture)
// Cadenas
string cadena1 = "Hola";
string cadena2 = "hola";
// CompareOrdinal
if (String.CompareOrdinal(cadena1, cadena2) == 0)
Console.WriteLine("Las cadenas son iguales");
else
Console.WriteLine("Las cadenas son distintas");Las cadenas son distintas
3 Concat
Combina varias instancias de cadenas separadas en una misma instancia.
// Cadenas string cadena1 = "Hola"; string cadena2 = "Mundo"; string espacio = " "; // Concat string cadena3 = String.Concat(cadena1, espacio, cadena2); Console.WriteLine(cadena3);
Hola Mundo
4 CopyTo
Copia un número de caracteres dentro de una nueva instancia.
// Cadenas string cadena = "Hola Mundo!"; char[] arreglo = new char[4]; // CopyTo cadena.CopyTo(0, arreglo, 0, 4); Console.WriteLine(arreglo);
Hola
5 Format
Nos permite dar formato a una cadena que contenga varios valores.
// Valor
int valor = 50;
// Format
Console.WriteLine(String.Format("Decimal: {0:D}", valor));
Console.WriteLine(String.Format("Dolares: {0:$#,##0.00 USD}", valor));
Console.WriteLine(String.Format("Exponencial: {0:E}", valor));
Console.WriteLine(String.Format("General: {0:G}", valor));
Console.WriteLine(String.Format("Hexadecimal: {0:X}", valor));
Console.WriteLine(String.Format("Moneda: {0:C}", valor));
Console.WriteLine(String.Format("Porcentaje: {0:P}", valor));Dolares: $50.00 USD Exponencial: 5.000000E+001 General: 50 Hexadecimal: 32 Moneda: $50.00 Porcentaje: 5,000.00%
6 IndexOf
Nos permite conocer la posición inicial de una cadena.
// Cadena
string cadena = "Hola Mundo!";
// IndexOf
Console.WriteLine("La cadena 'Mundo' comienza en la posición {0:D}", cadena.IndexOf("Mundo") + 1);La cadena 'Mundo' comienza en la posición 6
Hay que recordar que los arreglos comienzan en 0, es por eso que incrementamos 1:
cadena.IndexOf("Mundo") + 17 IndexOfAny
Nos permite conocer la posición inicial de cualquier cadena especificada.
// Cadena
string cadena1 = "Hola Mundo!";
string cadena2 = "No todo es como Java";
char[] arreglo = new char[] {'M', 't'};
// IndexOfAny
Console.WriteLine("La letra 'M' o 't' se encuentra en la posición {0:D}", cadena1.IndexOfAny(arreglo) + 1);
Console.WriteLine("La letra 'M' o 't' se encuentra en la posición {0:D}", cadena2.IndexOfAny(arreglo) + 1);La letra 'M' o 't' se encuentra en la posición 6 La letra 'M' o 't' se encuentra en la posición 4
8 Insert
Inserta una cadena dentro de otra.
// Cadena string cadena = "Hola C-Sharp"; // Insert Console.WriteLine(cadena.Insert(12, ", ya no te pareces a Java"));
Hola C-Sharp, ya no te pareces a Java
9 Join
Construye una sola cadena a partir de arreglos.
// Cadena
string[] cadena = {"C/C++", "C#", "Java", "PHP"};
// Join
Console.WriteLine("Lenguajes de programación: {0}", String.Join(", ", cadena));Lenguajes de programación: C/C++, C#, Java, PHP
10 LastIndexOf
Nos permite conocer la última posición de una cadena.
// Cadena
string cadena = "Hola Mundo! Hola C-Sharp";
// LastIndexOf
Console.WriteLine("La última palabra 'Hola' esta en la posición: {0}", cadena.LastIndexOf("Hola") + 1);La última palabra 'Hola' esta en la posición: 13
11 LastIndexOfAny
Nos permite conocer la última posición de cualquier cadena.
// Cadena
string cadena1 = "Hola Mundo, Hola C#";
string cadena2 = "No todo es como Java";
char[] arreglo = new char[] {'H', 't'};
// LastIndexOfAny
Console.WriteLine("La última letra 'H' o 't' se encuentra en la posición {0:D}", cadena1.LastIndexOfAny(arreglo) + 1);
Console.WriteLine("La última letra 'H' o 't' se encuentra en la posición {0:D}", cadena2.LastIndexOfAny(arreglo) + 1);La última letra 'H' o 't' se encuentra en la posición 13 La última letra 'H' o 't' se encuentra en la posición 4
12 PadLeft
Agrega espacios del lado izquierdo tomando en cuenta la longitud de la cadena.
// Cadena
string cadena = "Hola Mundo";
cadena = cadena.PadLeft(12);
Console.WriteLine("~" + cadena);~ Hola Mundo
13 PadRight
Agrega espacios del lado derecho tomando en cuenta la longitud de la cadena.
// Cadena string cadena = "Hola Mundo"; cadena = cadena.PadRight(12); Console.WriteLine(cadena + "~");
Hola Mundo ~
14 Replace
Remplaza una cadena completa.
// Cadena string cadena = "1 2 3 4 5 6 7 8 9"; // Replace Console.WriteLine(cadena.Replace(cadena, ", "));
1, 2, 3, 4, 5, 6, 7, 8, 9
En este ejemplo, remplazamos los espacios en blanco y los reemplazamos por una coma y un espacio , .
15 Split
Separa una cadena y la regresa en un arreglo del tipo string.
// Cadenas
string cadena = "C, C++, C#, Java, PHP y Objective-C";
char[] separadores = new char[] {',', 'y'};
// Split
string[] arreglo = cadena.Split(separadores);
foreach (string lista in arreglo)
{
Console.WriteLine(lista);
}C C++ C# Java PHP Objective-C
16 Substring
Extrae un fragmento a partir de cierta posición.
// Cadena string cadena = "Gracias a todo el equipo de Mono-Project"; // Substring Console.WriteLine(cadena.Substring(28, 4));
Mono
17 ToLower
Convierte toda la cadena en minúsculas.
// Cadena string cadena = "C, C++, C#, Java, PHP y Objective-C"; // ToLower Console.WriteLine(cadena.ToLower());
c, c++, c#, java, php y objective-c
18 ToUpper
Convierte toda la cadena en mayúsculas.
// Cadena string cadena = "C, C++, C#, Java, PHP y Objective-C"; // ToUpper Console.WriteLine(cadena.ToUpper());
C, C++, C#, JAVA, PHP Y OBJECTIVE-C
19 Trim
Elimina los espacios en blanco de los costados de una cadena.
// Cadena string cadena = " C, C++, C#, Java, PHP y Objective-C "; // Trim Console.WriteLine(cadena); Console.WriteLine(cadena.Trim());
C, C++, C#, Java, PHP y Objective-C C, C++, C#, Java, PHP y Objective-C