using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
Willkommen zu unserem Tutorial über die praktische Find-Funktion von C#. Sie sind soeben über eine leistungsstarke Funktion gestolpert, die Ihren Codierungsprozess rationalisieren kann. Egal, ob Sie ein erfahrener Programmierer sind oder gerade erst anfangen, dieses Tutorial wird Sie durch alle Elemente führen, damit Sie loslegen können.
Die Grundlagen der Suche
Im Kern ist Find eine Funktion, die es Ihnen ermöglicht, das erste Element in einer Sammlung, einem Array oder einer Liste zu finden, das ein bestimmtes Prädikat erfüllt. Was ist ein Prädikat, fragen Sie? In der Programmierung ist ein Prädikat eine Funktion, die bestimmte Bedingungen prüft, die für Elemente in einer Sammlung definiert sind.
Lassen Sie uns nun in ein Beispiel für eine öffentliche Klasse eintauchen.
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
$vbLabelText $csharpLabel
In diesem Code ist BikePart unsere öffentliche Klasse, und sie enthält eine öffentliche Zeichenkette ID, um jedes Fahrradteil zu identifizieren. Wir haben die ToString-Methode überschrieben, um die ID des Fahrradteils schön auszugeben, und wir haben auch die Equals- und GetHashCode-Methoden für Vergleichszwecke überschrieben.
Verwendung von Find mit Prädikaten
Nun, da wir unsere BikePart-Klasse haben, können wir eine Liste von Fahrradteilen erstellen und Find verwenden, um bestimmte Teile basierend auf ihren IDs zu lokalisieren. Betrachten wir das folgende Beispiel:
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
$vbLabelText $csharpLabel
In diesem Code instanziieren wir vier BikePart Objekte mit eindeutigen IDs. Als Nächstes erstellen wir ein Prädikat findChainRingPredicate, das überprüft, ob ein Fahrradteil die ID "Chain Ring ID" hat. Schließlich rufen wir Find auf unserer Liste von Fahrradteilen mit dem von uns definierten Prädikat auf und drucken die gefundene Teile-ID auf die Konsole.
Verstehen des Prädikatsparameters
Sie fragen sich vielleicht über den Predicate match-Parameter in unserer Find-Methode. Hier legen Sie die Bedingungen fest, unter denen die Find-Methode ein Element zurückgibt. In unserem Fall wollten wir, dass die Find-Methode das erste Element zurückgibt, das der "Chain Ring ID" entspricht.
Wenn kein Element die in Ihrem Prädikat definierten Bedingungen erfüllt, gibt die Find-Methode einen Standardwert zurück. Zum Beispiel, wenn Sie mit einem Array von Ganzzahlen arbeiten und Ihr Prädikat keine Übereinstimmung findet, wird die Find-Methode '0' zurückgeben, den Standardwert für Ganzzahlen in C#.
Das Prinzip der linearen Suche
Es ist wichtig zu beachten, dass die Find-Funktion eine lineare Suche über das gesamte Array, die Liste oder die Sammlung durchführt. Das bedeutet, dass sie beim ersten Element beginnt und jedes folgende Element der Reihe nach untersucht, bis sie das erste Vorkommen eines Elements findet, das das Prädikat erfüllt.
In manchen Fällen möchten Sie vielleicht das letzte Element finden, das das Prädikat erfüllt, und nicht das erste. Zu diesem Zweck stellt C# die Funktion FindLast bereit.
FindIndex und FindLastIndex
Genau wie Find Ihnen hilft, das erste Vorkommen eines Elements zu finden, das Ihrem angegebenen Prädikat entspricht, bietet C# auch die Methoden FindIndex und FindLastIndex, um Ihnen die Indizes der ersten und letzten Elemente zu geben, die Ihren Bedingungen entsprechen.
Nehmen wir ein Beispiel:
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
$vbLabelText $csharpLabel
Die Kraft von FindAll
Die FindAll-Methode ruft, wie der Name schon sagt, alle Elemente in der Sammlung ab, die das Prädikat erfüllen. Sie wird verwendet, wenn Sie Elemente auf der Grundlage bestimmter Bedingungen filtern müssen. Die FindAll-Methode gibt eine neue Liste mit allen übereinstimmenden Elementen zurück.
Hier ein Beispiel für einen Code:
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
$vbLabelText $csharpLabel
IronPDF ins Spiel bringen
Ein wichtiger Bereich, in dem unsere C#-Kenntnisse genutzt werden können, ist die Bearbeitung von PDF-Inhalten mit IronPDF, einer leistungsstarken C#-Bibliothek für die PDF-Verarbeitung.
Angenommen, wir arbeiten mit einem PDF-Dokument, das Informationen über verschiedene Fahrradteile enthält. Oft müssen wir bestimmte Teile innerhalb dieses Inhalts finden. Hier kombiniert sich IronPDF mit der C# Find-Methode, um eine leistungsstarke Lösung bereitzustellen.
Zuerst würden wir IronPDF verwenden, um den Text aus unserem PDF zu extrahieren und dann können wir die Find- oder FindAll-Methode verwenden, die wir zuvor kennengelernt haben, um den spezifischen Teil im extrahierten Text zu lokalisieren.
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
$vbLabelText $csharpLabel
In diesem Code haben wir eine PDF-Datei geladen, den Text extrahiert, ihn in Zeilen aufgeteilt und dann FindAll verwendet, um alle Zeilen zu finden, die 'Chain Ring ID' erwähnen.
Dies ist ein einfaches Beispiel dafür, wie die Find-Methode zusammen mit IronPDF in einem praktischen Szenario verwendet werden kann. Es demonstriert den Nutzen und die Vielseitigkeit von C# zusammen mit seinen leistungsstarken Bibliotheken, die Ihre Programmieraufgaben einfacher und effizienter machen.
Schlussfolgerung
In diesem Tutorial haben wir uns intensiv mit der C#-Methode Find und ihren Verwandten FindIndex, FindLastIndex und FindAll beschäftigt. Wir haben ihre Einsatzmöglichkeiten erforscht, einige Codebeispiele untersucht und herausgefunden, unter welchen Umständen sie am effektivsten sind.
Außerdem haben wir uns mit der IronPDF-Bibliothek in die Welt der PDF-Manipulation gewagt. Ebenso sahen wir eine praktische Anwendung unseres Find-Methodenwissens beim Extrahieren und Durchsuchen von Inhalten innerhalb eines PDF-Dokuments.
IronPDF bietet eine kostenlose Testversion von IronPDF an, die eine hervorragende Gelegenheit bietet, seine Funktionen zu erkunden und festzustellen, wie es Ihre C#-Projekte unterstützen kann. Wenn Sie sich entscheiden, IronPDF nach der Testversion weiterhin zu verwenden, beginnen die Lizenzen ab $749.
Chipego hat eine natürliche Fähigkeit zum Zuhören, die ihm hilft, Kundenprobleme zu verstehen und intelligente Lösungen anzubieten. Er trat dem Iron Software-Team 2023 bei, nachdem er einen Bachelor of Science in Informationstechnologie erworben hatte. IronPDF und IronOCR sind die beiden Produkte, auf die sich Chipego konzentriert hat, aber sein Wissen über alle Produkte wächst täglich, da er neue Wege findet, Kunden zu unterstützen. Er genießt die Zusammenarbeit bei Iron Software, da Teammitglieder aus dem gesamten Unternehmen ihre unterschiedlichen Erfahrungen einbringen und so zu effektiven, innovativen Lösungen beitragen. Wenn Chipego nicht an seinem Schreibtisch sitzt, kann man ihn oft bei einem guten Buch oder beim Fußballspielen antreffen.
< PREVIOUS C# Typen (Wie es für Entwickler funktioniert)
NÄCHSTES > C# Neu (Wie es für Entwickler funktioniert)