ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
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を持つ4つのBikePart
オブジェクトをインスタンス化します。 次に、バイク部品のIDが「Chain Ring ID」であるかを確認する述語 findChainRingPredicate
を作成します。 最後に、定義した述語を使用して自転車部品のリストに対して Find
を呼び出し、見つかった部品のIDをコンソールに出力します。
Find
メソッドの Predicate match パラメータについて疑問に思っているかもしれません。 Find
メソッドが要素を返す条件をここで定義します。 私たちの場合、Find
メソッドで「Chain Ring ID」に一致する最初の要素を返すことを望んでいました。
条件で定義された要素が存在しない場合、Find
メソッドはデフォルト値を返します。 例えば、整数の配列を扱っていて、述語が一致しない場合、Find
メソッドは C# における整数のデフォルト値である '0' を返します。
重要な点として、「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
メソッドは、すべての一致する要素を含む新しいリストを返します。
コード例を以下に示します:
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」に言及しているすべての行を特定しました。
以下は、IronPDFと一緒にFind
メソッドを実際のシナリオで使用する基本的な例です。 これは、C#の有用性と多様性を示しており、プログラミング作業をより簡単かつ効率的にする強力なライブラリを備えています。
このチュートリアルでは、C# の Find
メソッドとその関連メソッドである FindIndex
、FindLastIndex
、FindAll
について深く掘り下げていきます。 それらの用途を調査し、いくつかのコード例を調べ、それらが最も効果的な状況を明らかにしました。
また、IronPDFライブラリを使用してPDF操作の世界に進出しました。 同様に、PDFドキュメント内のコンテンツを抽出および検索する際に、Find
メソッドの知識が実用的に応用されているのを見ました。
IronPDFは無料のIronPdfの試用版機能を探索し、C#プロジェクトにどのように役立つかを判断する優れた機会を提供します。 試用期間後もIronPDFを引き続き使用する場合、ライセンスは $749 から開始します。
9つの .NET API製品 オフィス文書用