透かしなしで本番環境でテストしてください。
必要な場所で動作します。
30日間、完全に機能する製品をご利用いただけます。
数分で稼働させることができます。
製品トライアル期間中にサポートエンジニアリングチームへの完全アクセス
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を含んでいます。 私たちは、バイク部品のIDをきれいに印刷するためにToString
メソッドをオーバーライドし、比較の目的でEquals
およびGetHashCode
メソッドもオーバーライドしました。
これでBikePart
クラスができたので、バイクの部品リストを作成し、Find
を使用して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
このコードでは、4つのBikePart
オブジェクトをユニークなIDでインスタンス化します。 次に、findChainRingPredicate
という述語を作成し、バイクの部品が「Chain Ring ID」のIDを持っているかどうかを確認します。 最後に、定義した述語を使用して、自転車部品のリストでFind
を呼び出し、見つかった部品のIDをコンソールに出力します。
私たちのFind
メソッドのPredicate matchパラメーターについて疑問に思っているかもしれません。 これは、Find
メソッドが要素を返す条件を定義するところです。 私たちの場合、Find
メソッドが「チェーンリングID」に一致する最初の要素を返すようにしたかったです。
条件を満たす要素がない場合、Find
メソッドはデフォルト値を返します。 たとえば、整数の配列を扱っていて、述語が一致を見つけられない場合、Find
メソッドは C# における整数のデフォルト値である '0' を返します。
重要なのは、Find
関数が配列、リスト、またはコレクション全体に対して線形検索を行うことです。 これは、最初の要素から始まり、各次の要素を順番に調べて、述語を満たす要素の最初の出現を見つけるまで続けることを意味します。
場合によっては、最初の要素ではなく、条件を満たす最後の要素を見つけたいことがあるかもしれません。 この目的のために、C# は FindLast
関数を提供します。
FindIndex
とFindLastIndex
C#では、指定した述語に一致する要素の最初の出現を見つけるのに役立つFind
のように、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
メソッドは、すべての一致した要素を含む新しいリストを返します。
コード例を以下に示します:
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の知識が活用できる重要な分野は、PDF処理のための強力なC#ライブラリであるIronPDFを使用した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操作の世界に進出しました。 同様に、PDFドキュメント内のコンテンツを抽出および検索する際に、Find
メソッドの知識の実用的な応用を確認しました。
IronPDFは、IronPDFの無料トライアルを提供しており、その機能を探索し、C#プロジェクトにどのように役立つかを判断するのに最適な機会を提供します。 試用期間後にIronPDFの使用を続けることを決定した場合、ライセンスは$749から開始します。