Cómo: Buscar caracteres en una cadena (LINQ)
Dado que la clase String implementa la interfaz genérica IEnumerable<T>, cualquier cadena se puede consultar como una secuencia de caracteres. Sin embargo, éste no es ningún uso común de LINQ. Para operaciones de coincidencia de modelos complejas, utilice la clase Regex.
Ejemplo
En el ejemplo siguiente se consulta una cadena para determinar el número de dígitos numéricos que contiene. Observe que la consulta se "reutiliza" después de que se ejecuta la primera vez. Esto es posible porque la propia consulta no almacena ningún resultado real.
Class QueryAString
Shared Sub Main()
' A string is an IEnumerable data source.
Dim aString As String = "ABCDE99F-J74-12-89A"
' Select only those characters that are numbers
Dim stringQuery = From ch In aString
Where Char.IsDigit(ch)
Select ch
' Execute the query
For Each c As Char In stringQuery
Console.Write(c & " ")
Next
' Call the Count method on the existing query.
Dim count As Integer = stringQuery.Count()
Console.WriteLine(System.Environment.NewLine & "Count = " & count)
' Select all characters before the first '-'
Dim stringQuery2 = aString.TakeWhile(Function(c) c <> "-")
' Execute the second query
For Each ch In stringQuery2
Console.Write(ch)
Next
Console.WriteLine(System.Environment.NewLine & "Press any key to exit")
Console.ReadKey()
End Sub
End Class
' Output:
' 9 9 7 4 1 2 8 9
' Count = 8
' ABCDE99F
class QueryAString
{
static void Main()
{
string aString = "ABCDE99F-J74-12-89A";
// Select only those characters that are numbers
IEnumerable<char> stringQuery =
from ch in aString
where Char.IsDigit(ch)
select ch;
// Execute the query
foreach (char c in stringQuery)
Console.Write(c + " ");
// Call the Count method on the existing query.
int count = stringQuery.Count();
Console.WriteLine("Count = {0}", count);
// Select all characters before the first '-'
IEnumerable<char> stringQuery2 = aString.TakeWhile(c => c != '-');
// Execute the second query
foreach (char c in stringQuery2)
Console.Write(c);
Console.WriteLine(System.Environment.NewLine + "Press any key to exit");
Console.ReadKey();
}
}
/* Output:
Output: 9 9 7 4 1 2 8 9
Count = 8
ABCDE99F
*/
Compilar el código
Cree un proyecto de Visual Studio dirigido a .NET Framework versión 3.5. De manera predeterminada, el proyecto incluye una referencia a System.Core.dll y una directiva using (C#) o una instrucción Imports (Visual Basic) para el espacio de nombres System.Linq. En los proyectos de C#, agregue una directiva using para el espacio de nombres System.IO.
Copie este código en el proyecto.
Presione F5 para compilar y ejecutar el programa.
Presione cualquier tecla para salir de la ventana de consola.
Vea también
Tareas
Cómo: Combinar consultas LINQ con expresiones regulares