Cadenas en C#


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") + 1

7 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

Posted in

Leave a Reply