Pruebe en producción sin marcas de agua.
Funciona donde lo necesite.
Obtén 30 días de producto totalmente funcional.
Ténlo en funcionamiento en minutos.
Acceso completo a nuestro equipo de asistencia técnica durante la prueba del producto
Bienvenido a nuestro tutorial sobre la práctica función Find
de C#. Acaba de toparse con una potente función que puede agilizar su proceso de codificación. Tanto si eres un programador experimentado como si acabas de empezar, este tutorial te guiará a través de todos los elementos necesarios para ponerte en marcha.
En su esencia, Find
es una función que te permite localizar el primer elemento en una colección, matriz o lista que cumpla con un predicado especificado. ¿Qué es un predicado? En programación, un predicado es una función que comprueba determinadas condiciones definidas para los elementos de una colección.
Ahora, vamos a sumergirnos en un ejemplo de clase pública.
public class BikePart
{
public string id { get; set; }
public override bool Equals(object obj)
{
if (obj == null
!(obj is BikePart))
return false;
return this.id == ((BikePart)obj).id;
}
public override int GetHashCode()
{
return this.id.GetHashCode();
}
public override string ToString()
{
return "BikePart ID: " + this.id;
}
}
public class BikePart
{
public string id { get; set; }
public override bool Equals(object obj)
{
if (obj == null
!(obj is BikePart))
return false;
return this.id == ((BikePart)obj).id;
}
public override int GetHashCode()
{
return this.id.GetHashCode();
}
public override string ToString()
{
return "BikePart ID: " + this.id;
}
}
Public Class BikePart
Public Property id() As String
Public Overrides Function Equals(ByVal obj As Object) As Boolean
If obj Is Nothing (Not (TypeOf obj Is BikePart)) Then
Return False
End If
Return Me.id = DirectCast(obj, BikePart).id
End Function
Public Overrides Function GetHashCode() As Integer
Return Me.id.GetHashCode()
End Function
Public Overrides Function ToString() As String
Return "BikePart ID: " & Me.id
End Function
End Class
En este código, BikePart
es nuestra clase pública, y contiene una cadena pública ID para identificar cada parte de la bicicleta. Hemos sobrescrito el método ToString
para imprimir el ID de la pieza de bicicleta de manera adecuada, y también hemos sobrescrito los métodos Equals
y GetHashCode
para fines de comparación.
Ahora que tenemos nuestra clase BikePart
, podemos crear una lista de partes de bicicleta y usar Find
para localizar partes específicas basadas en sus ID. Veamos el siguiente ejemplo:
public static void Main()
{
List bikeParts = new List
{
new BikePart { id = "Chain Ring ID" },
new BikePart { id = "Crank Arm ID" },
new BikePart { id = "Regular Seat ID" },
new BikePart { id = "Banana Seat ID" },
};
Predicate findChainRingPredicate = (BikePart bp) => { return bp.id == "Chain Ring ID"; };
BikePart chainRingPart = bikeParts.Find(findChainRingPredicate);
Console.WriteLine(chainRingPart.ToString());
}
public static void Main()
{
List bikeParts = new List
{
new BikePart { id = "Chain Ring ID" },
new BikePart { id = "Crank Arm ID" },
new BikePart { id = "Regular Seat ID" },
new BikePart { id = "Banana Seat ID" },
};
Predicate findChainRingPredicate = (BikePart bp) => { return bp.id == "Chain Ring ID"; };
BikePart chainRingPart = bikeParts.Find(findChainRingPredicate);
Console.WriteLine(chainRingPart.ToString());
}
Public Shared Sub Main()
Dim bikeParts As New List From {
New BikePart With {.id = "Chain Ring ID"},
New BikePart With {.id = "Crank Arm ID"},
New BikePart With {.id = "Regular Seat ID"},
New BikePart With {.id = "Banana Seat ID"}
}
Dim findChainRingPredicate As Predicate = Function(bp As BikePart)
Return bp.id = "Chain Ring ID"
End Function
Dim chainRingPart As BikePart = bikeParts.Find(findChainRingPredicate)
Console.WriteLine(chainRingPart.ToString())
End Sub
En este código, instanciamos cuatro objetos BikePart
con identificaciones únicas. A continuación, creamos un predicado findChainRingPredicate
que verifica si una pieza de bicicleta tiene el ID "Chain Ring ID". Finalmente, llamamos a Find
en nuestra lista de piezas de bicicleta usando el predicado que definimos e imprimimos el ID de la pieza encontrada en la consola.
Es posible que te estés preguntando sobre el parámetro Predicate match en nuestro método Find
. Aquí es donde defines las condiciones bajo las cuales el método Find
devuelve un elemento. En nuestro caso, queríamos que el método Find
devolviera el primer elemento que coincidiera con el "Chain Ring ID".
Si ningún elemento satisface las condiciones definidas en su predicado, el método Find
devolverá un valor predeterminado. Por ejemplo, si estás trabajando con un array de enteros y tu predicado no encuentra una coincidencia, el método Find
devolverá '0', el valor predeterminado para enteros en C#.
Es esencial notar que la función Find
realiza una búsqueda lineal a través de todo el array, lista o colección. Esto significa que comienza en el primer elemento e inspecciona cada elemento siguiente en secuencia hasta que localiza la primera aparición de un elemento que satisface el predicado.
En algunos casos, es posible que desee localizar el último elemento que satisface el predicado en lugar del primero. Para este propósito, C# proporciona la función FindLast
.
FindIndex
y FindLastIndex
Así como Find
te ayuda a localizar la primera ocurrencia de un elemento que coincide con tu predicado especificado, C# también proporciona los métodos FindIndex
y FindLastIndex
para ofrecerte los índices de los primeros y últimos elementos que coinciden con tus condiciones, respectivamente.
Pongamos un ejemplo:
public static void Main()
{
List bikeParts = new List
{
new BikePart { id = "Chain Ring ID" },
new BikePart { id = "Crank Arm ID" },
new BikePart { id = "Regular Seat ID" },
new BikePart { id = "Banana Seat ID" },
new BikePart { id = "Chain Ring ID" }, // Added a second chain ring
};
Predicate findChainRingPredicate = (BikePart bp) => { return bp.id == "Chain Ring ID"; };
int firstChainRingIndex = bikeParts.FindIndex(findChainRingPredicate);
int lastChainRingIndex = bikeParts.FindLastIndex(findChainRingPredicate);
Console.WriteLine($"First Chain Ring ID found at index: {firstChainRingIndex}");
Console.WriteLine($"Last Chain Ring ID found at index: {lastChainRingIndex}");
}
public static void Main()
{
List bikeParts = new List
{
new BikePart { id = "Chain Ring ID" },
new BikePart { id = "Crank Arm ID" },
new BikePart { id = "Regular Seat ID" },
new BikePart { id = "Banana Seat ID" },
new BikePart { id = "Chain Ring ID" }, // Added a second chain ring
};
Predicate findChainRingPredicate = (BikePart bp) => { return bp.id == "Chain Ring ID"; };
int firstChainRingIndex = bikeParts.FindIndex(findChainRingPredicate);
int lastChainRingIndex = bikeParts.FindLastIndex(findChainRingPredicate);
Console.WriteLine($"First Chain Ring ID found at index: {firstChainRingIndex}");
Console.WriteLine($"Last Chain Ring ID found at index: {lastChainRingIndex}");
}
Public Shared Sub Main()
Dim bikeParts As New List From {
New BikePart With {.id = "Chain Ring ID"},
New BikePart With {.id = "Crank Arm ID"},
New BikePart With {.id = "Regular Seat ID"},
New BikePart With {.id = "Banana Seat ID"},
New BikePart With {.id = "Chain Ring ID"}
}
Dim findChainRingPredicate As Predicate = Function(bp As BikePart)
Return bp.id = "Chain Ring ID"
End Function
Dim firstChainRingIndex As Integer = bikeParts.FindIndex(findChainRingPredicate)
Dim lastChainRingIndex As Integer = bikeParts.FindLastIndex(findChainRingPredicate)
Console.WriteLine($"First Chain Ring ID found at index: {firstChainRingIndex}")
Console.WriteLine($"Last Chain Ring ID found at index: {lastChainRingIndex}")
End Sub
FindAll
El método FindAll
, como sugiere su nombre, recupera todos los elementos en la colección que cumplen con el predicado. Se utiliza cuando es necesario filtrar elementos en función de determinadas condiciones. El método FindAll
devuelve una nueva lista con todos los elementos coincidentes.
He aquí un ejemplo de código:
public static void Main()
{
List bikeParts = new List
{
new BikePart { id = "Chain Ring ID" },
new BikePart { id = "Crank Arm ID" },
new BikePart { id = "Regular Seat ID" },
new BikePart { id = "Banana Seat ID" },
new BikePart { id = "Chain Ring ID" }, // Added a second chain ring
};
Predicate findChainRingPredicate = (BikePart bp) => { return bp.id == "Chain Ring ID"; };
List chainRings = bikeParts.FindAll(findChainRingPredicate);
Console.WriteLine($"Found {chainRings.Count} Chain Rings:");
foreach (BikePart chainRing in chainRings)
{
Console.WriteLine(chainRing.ToString());
}
}
public static void Main()
{
List bikeParts = new List
{
new BikePart { id = "Chain Ring ID" },
new BikePart { id = "Crank Arm ID" },
new BikePart { id = "Regular Seat ID" },
new BikePart { id = "Banana Seat ID" },
new BikePart { id = "Chain Ring ID" }, // Added a second chain ring
};
Predicate findChainRingPredicate = (BikePart bp) => { return bp.id == "Chain Ring ID"; };
List chainRings = bikeParts.FindAll(findChainRingPredicate);
Console.WriteLine($"Found {chainRings.Count} Chain Rings:");
foreach (BikePart chainRing in chainRings)
{
Console.WriteLine(chainRing.ToString());
}
}
Public Shared Sub Main()
Dim bikeParts As New List From {
New BikePart With {.id = "Chain Ring ID"},
New BikePart With {.id = "Crank Arm ID"},
New BikePart With {.id = "Regular Seat ID"},
New BikePart With {.id = "Banana Seat ID"},
New BikePart With {.id = "Chain Ring ID"}
}
Dim findChainRingPredicate As Predicate = Function(bp As BikePart)
Return bp.id = "Chain Ring ID"
End Function
Dim chainRings As List = bikeParts.FindAll(findChainRingPredicate)
Console.WriteLine($"Found {chainRings.Count} Chain Rings:")
For Each chainRing As BikePart In chainRings
Console.WriteLine(chainRing.ToString())
Next chainRing
End Sub
Un área crucial en la que se pueden utilizar nuestros conocimientos de C# Find es la manipulación de contenido PDF mediante IronPDF, una potente biblioteca de C# para el procesamiento de PDF.
Supongamos que estamos trabajando con un documento PDF que contiene información sobre varias piezas de bicicleta. A menudo, necesitamos localizar partes específicas dentro de este contenido. Aquí es donde IronPDF y el método C# Find se combinan para ofrecer una solución poderosa.
Primero, usaríamos IronPDF para extraer el texto de nuestro PDF y luego podemos usar el método Find
o FindAll
que hemos aprendido anteriormente para localizar la parte específica en el texto extraído.
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile(@"C:\Users\Administrator\Desktop\bike.pdf");
string pdfText = pdf.ExtractAllText();
// Assuming our PDF text is split into lines
List pdfLines = pdfText.Split('\n').ToList();
Predicate findChainRingPredicate = (string line) => { return line.Contains("Chain Ring ID"); };
List chainRingLines = pdfLines.FindAll(findChainRingPredicate);
Console.WriteLine($"Found {chainRingLines.Count} lines mentioning 'Chain Ring ID':");
foreach (string line in chainRingLines)
{
Console.WriteLine(line);
}
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile(@"C:\Users\Administrator\Desktop\bike.pdf");
string pdfText = pdf.ExtractAllText();
// Assuming our PDF text is split into lines
List pdfLines = pdfText.Split('\n').ToList();
Predicate findChainRingPredicate = (string line) => { return line.Contains("Chain Ring ID"); };
List chainRingLines = pdfLines.FindAll(findChainRingPredicate);
Console.WriteLine($"Found {chainRingLines.Count} lines mentioning 'Chain Ring ID':");
foreach (string line in chainRingLines)
{
Console.WriteLine(line);
}
Imports Microsoft.VisualBasic
Imports IronPdf
Private pdf As PdfDocument = PdfDocument.FromFile("C:\Users\Administrator\Desktop\bike.pdf")
Private pdfText As String = pdf.ExtractAllText()
' Assuming our PDF text is split into lines
Private pdfLines As List = pdfText.Split(ControlChars.Lf).ToList()
Private findChainRingPredicate As Predicate = Function(line As String)
Return line.Contains("Chain Ring ID")
End Function
Private chainRingLines As List = pdfLines.FindAll(findChainRingPredicate)
Console.WriteLine($"Found {chainRingLines.Count} lines mentioning 'Chain Ring ID':")
For Each line As String In chainRingLines
Console.WriteLine(line)
Next line
En este código, hemos cargado un PDF, extraído el texto, dividido en líneas y luego utilizado FindAll
para localizar todas las líneas mencionando 'Chain Ring ID'.
Este es un ejemplo básico de cómo se puede usar el método Find
junto con IronPDF en un escenario práctico. Demuestra la utilidad y versatilidad de C# junto con sus potentes bibliotecas que ayudan a que sus tareas de programación sean más fáciles y eficientes.
En este tutorial, profundizamos en el método Find
de C# y sus relativos, FindIndex
, FindLastIndex
y FindAll
. Exploramos sus usos, analizamos algunos ejemplos de código y descubrimos las circunstancias en las que son más eficaces.
También nos aventuramos en el mundo de la manipulación de PDF utilizando la biblioteca IronPDF. Del mismo modo, vimos una aplicación práctica de nuestro conocimiento del método Find
en la extracción y búsqueda de contenido dentro de un documento PDF.
IronPDF ofrece una prueba gratuita de IronPDF, brindando una excelente oportunidad para explorar sus funcionalidades y determinar cómo puede beneficiar a tus proyectos en C#. Si decides continuar usando IronPDF después de la prueba, las licencias comienzan desde $749.