在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
歡迎來到我們的 C# Find
函數實用教程。 您剛剛發現了一個強大的功能,可以簡化您的編碼流程。 因此,無論您是經驗豐富的程式設計師還是剛入門,本教程將逐步指導您完成所有元素,以幫助您啟動。
本質上,Find
是一個函數,允許您在集合、陣列或列表中找到符合指定謂詞的第一個元素。 你問,什麼是謂詞? 在程式設計中,謂詞是一個用於測試集合中元素所定義條件的函數。
現在,我們來探討一個公共類別範例。
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
在這段代碼中,BikePart
是我們的公共類,並且包含一個公共字串 ID 以識別每個自行車零件。 我們重寫了 ToString
方法,以更好地顯示自行車零件的 ID,並且也重寫了 Equals
和 GetHashCode
方法以便進行比較。
現在我們已經擁有 BikePart
類別,我們可以創建一個自行車零件的列表並使用查找
根據其 ID 定位特定部分。 讓我們考慮以下範例:
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
在這段程式碼中,我們實例化了四個具有唯一 ID 的 BikePart
對象。 接下來,我們創建一個名為 findChainRingPredicate
的斷言,用來檢查自行車零件是否具有 "Chain Ring ID" 的ID。 最後,我們使用所定義的謂詞在自行車零件清單上調用 Find
,並將找到的零件 ID 輸出到控制台。
您可能對我們的 Find
方法中的 Predicate match 參數感到好奇。 在這裡,您可以定義 Find
方法返回元素的條件。 在我們的例子中,我們希望 Find
方法返回與“鏈環 ID”匹配的第一個元素。
如果沒有元素符合您謂詞中定義的條件,Find
方法將返回預設值。 例如,如果您正在處理一個整數數組,而您的謂詞未找到匹配項,Find
方法將返回 '0',這是 C# 中整數的默認值。
請注意,Find
函數會對整個數組、列表或集合進行線性搜索。 這意味著從第一個元素開始,並依序檢查每個後續元素,直到找到第一個滿足條件的元素為止。
在某些情況下,您可能希望找到滿足條件的最後一個元素,而不是第一個。 為此目的,C# 提供了 FindLast
函數。
FindIndex
和 FindLastIndex
正如 Find
幫助您定位第一個符合您指定條件的元素一樣,C# 也提供了 FindIndex
和 FindLastIndex
方法,分別為您提供第一個和最後一個符合您條件的元素的索引。
讓我們嘗試一個例子:
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
的力量FindAll
方法,顧名思義,是檢索集合中滿足條件的所有元素。 當您需要根據某些條件篩選元素時使用。 FindAll
方法返回一個包含所有匹配元素的新 List。
以下是一個代碼範例:
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
我們的 C# Find 知識可以用於的一個關鍵領域是使用 IronPDF 進行 PDF 內容操作,這是一個強大的 C# PDF 處理庫。
假設我們正在處理一份包含各種自行車零件資訊的 PDF 文件。 通常,我們需要在此內容中找到特定部分。 這就是 IronPDF 和 C# Find 方法結合以提供強大解決方案的地方。
首先,我們將使用IronPDF至從我們的PDF中提取文本然後我們可以使用稍早學過的 Find
或 FindAll
方法來定位提取文字中的特定部分。
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
在此代碼中,我們載入了一個 PDF,提取了文本,將其分成行,然後使用 FindAll
來定位提到 'Chain Ring ID' 的所有行。
這是一個基本範例,說明如何在實際情況中將 Find
方法與 IronPDF 結合使用。 它展示了 C# 的實用性和多功能性,以及其強大的庫如何幫助使您的編程任務更輕鬆和高效。
在本教程中,我們深入探討了 C# 的 Find
方法及其相關方法,FindIndex
、FindLastIndex
和 FindAll
。 我們探討了它們的用途,研究了一些代碼範例,並發現了它們最有效的情況。
我們還使用IronPDF庫進入了PDF操作的世界。 同樣地,我們看到了使用 Find
方法在 PDF 文件中提取和搜索內容的實際應用。
IronPDF 提供免費IronPDF 試用版,提供一個絕佳的機會來探索其功能,並確定它如何能為您的 C# 專案帶來好處。 如果您決定在試用期後繼續使用IronPDF,授權價格從$749開始。