跳過到頁腳內容
.NET幫助

C#字符串等於(它如何對開發者起作用)

在 C# 應用程式中處理 PDF 文檔時,字串比較是一項出乎意料的常見任務,無論您是在檢查提取的文本、驗證元數據還是有條件地修改文件。 C# 中的 string.Equals 方法提供了一種精確的字符串對比方式,當與 IronPDF 結合使用時,將成為您的 PDF 自動化工具包中的強大工具。

在本文中,我們將探討什麼是 string.Equals,它在 .NET 中的重要性,以及如何有效地與領先的 .NET PDF 庫 - IronPDF 一同使用。

C# 中的 string.Equals 是什麼?

C 字串等於方法,在 C# 中稱為 string.Equals,用於比較表示字符串或其他兼容對象的兩個參數的內容。 您可以傳遞普通字符串值或在比較期間將被轉換為字符串的類型對象。 與 == 運算符不同,== 在語法上是一種語法糖,用來等於字符串,明確使用 string.Equals 允許您:

  • 指定比較規則(例如大小寫敏感比較或文化不敏感比較)。

  • 避免與重載運算符混淆。

  • 改善條件邏輯的可讀性。

.NET Framework 中的方法簽名通常看起來像這樣:

public bool Equals(string value, StringComparison comparisonType)
public bool Equals(string value, StringComparison comparisonType)
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'public bool Equals(string value, StringComparison comparisonType)
$vbLabelText   $csharpLabel

這裡,public bool 表示根據比較結果返回值始終是 true 或 false。

基本語法

string.Equals(str1, str2)
string.Equals(str1, str2, StringComparison.OrdinalIgnoreCase)
string.Equals(str1, str2)
string.Equals(str1, str2, StringComparison.OrdinalIgnoreCase)
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'string.Equals(str1, str2) string.Equals(str1, str2, StringComparison.OrdinalIgnoreCase)
$vbLabelText   $csharpLabel

此方法接受兩個參數:比較的兩個字符串或字符串對象,還可以選擇要執行的比較類型。 返回值是布林值。 如果根據比較規則,兩個參數相等,該方法將返回 true,否則返回 false。

您可以使用不同的 StringComparison 選項比較兩個字符串,例如:

  • Ordinal(二進制比較,區分大小寫)

  • OrdinalIgnoreCase(不區分大小寫比較)

  • CurrentCulture

  • InvariantCultureIgnoreCase

它如何與 IronPDF 協同工作

IronPDF 是一個強大的 .NET PDF 庫,允許您在 PDF 文檔中搜索、提取和操作文本。 通過使用 string.Equals,您可以:

  • 將提取的字符串值與已知值進行比較。

  • 檢查元數據字段如標題、作者和關鍵字。

  • 有條件地編輯您的 PDF 文檔,讓您可以根據字符串比較結果添加註釋、標注或水印。

讓我們來看看以下示例,string.Equals 在 IronPDF 工作流程中如何發揮作用。

示例 1:用 string.Equals 比較提取的文本

假設您正在掃描 PDF 發票並希望驗證其中是否包含特定的公司名稱。 這是一個示例,展示如何避免常見陷阱(如空引用異常)以及該方法如何強健地檢查相等性。

以下示例將使用此 PDF:

輸入 PDF

using IronPdf;
using IronPdf.Editing;

class Program
{
    public static void Main(string[] args)
    {
        var pdf = new IronPdf.PdfDocument("invoice.pdf");
        string extractedText = pdf.ExtractAllText();

        var lines = extractedText.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

        foreach (var line in lines)
        {
            if (string.Equals(line.Trim(), "Acme Corporation", StringComparison.OrdinalIgnoreCase))
            {
                Console.WriteLine("Exact match found: Acme Corporation");
            }
        }

    }
}
using IronPdf;
using IronPdf.Editing;

class Program
{
    public static void Main(string[] args)
    {
        var pdf = new IronPdf.PdfDocument("invoice.pdf");
        string extractedText = pdf.ExtractAllText();

        var lines = extractedText.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

        foreach (var line in lines)
        {
            if (string.Equals(line.Trim(), "Acme Corporation", StringComparison.OrdinalIgnoreCase))
            {
                Console.WriteLine("Exact match found: Acme Corporation");
            }
        }

    }
}
Imports Microsoft.VisualBasic
Imports IronPdf
Imports IronPdf.Editing

Friend Class Program
	Public Shared Sub Main(ByVal args() As String)
		Dim pdf = New IronPdf.PdfDocument("invoice.pdf")
		Dim extractedText As String = pdf.ExtractAllText()

		Dim lines = extractedText.Split( { ControlChars.Cr, ControlChars.Lf }, StringSplitOptions.RemoveEmptyEntries)

		For Each line In lines
			If String.Equals(line.Trim(), "Acme Corporation", StringComparison.OrdinalIgnoreCase) Then
				Console.WriteLine("Exact match found: Acme Corporation")
			End If
		Next line

	End Sub
End Class
$vbLabelText   $csharpLabel

注意:該方法返回一個表示兩個字符串對象是否包含相同值的布林值。

這為什麼重要:

從以下輸出中我們可以看出,使用帶有 StringComparison.OrdinalIgnoreCase 的 string.Equals 確保 "ACME CORPORATION" 和 "Acme Corporation" 被視為相等 - 這在 OCR 或文本提取場景中,大小寫敏感差異可能導致不同行為時至關重要。

輸出

控制台輸出

示例 2:使用 string.Equals 驗證 PDF 元數據

PDF 文件中通常包含 元數據字段,比如標題、作者和主題。 IronPDF 能夠用來讀取這些屬性,從而輕鬆檢查和比較它們。

using IronPdf;

var pdf = new IronPdf.PdfDocument("invoice.pdf");

string author = pdf.MetaData.Author;

if (string.Equals(author, "Iron Software", StringComparison.InvariantCulture))
{
    Console.WriteLine("Invoice was issued by Iron Software.");
}
using IronPdf;

var pdf = new IronPdf.PdfDocument("invoice.pdf");

string author = pdf.MetaData.Author;

if (string.Equals(author, "Iron Software", StringComparison.InvariantCulture))
{
    Console.WriteLine("Invoice was issued by Iron Software.");
}
Imports IronPdf

Private pdf = New IronPdf.PdfDocument("invoice.pdf")

Private author As String = pdf.MetaData.Author

If String.Equals(author, "Iron Software", StringComparison.InvariantCulture) Then
	Console.WriteLine("Invoice was issued by Iron Software.")
End If
$vbLabelText   $csharpLabel

此方法在系統中尤為有用,在系統中基於元數據的驗證可以防止處理無法識別的字符串或無效文件。

輸出

控制台輸出

示例 3:基於文本匹配添加水印

您可能希望自動為包含某些關鍵字的 PDF 文檔添加水印。 這是如何做到的:

using IronPdf;
using IronPdf.Editing;

License.LicenseKey = "IRONSUITE.WRITERS.21046-907F5E67CC-AHYQW6L-RCHLPMRJMU4G-SET72XAF2JNY-LQK45E5JPLGW-XOLPVBEBLHV7-2LHKZRWUZWMO-5LNIZSPF4BM6-UHUH4R-T4MMJ4MEIYSQEA-DEPLOYMENT.TRIAL-LDG2MK.TRIAL.EXPIRES.16.NOV.2025";

var pdf = new IronPdf.PdfDocument("invoice.pdf");
string content = pdf.ExtractAllText();

var lines = content.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

foreach (var line in lines)
{
    if (string.Equals(line.Trim(), "DRAFT", StringComparison.OrdinalIgnoreCase))
    {
        Console.WriteLine("The document is a draft.");

        // Corrected HTML and CSS
        string watermark = @"<div style='color:red; font-size:72px; font-weight:bold;'>DRAFT</div>";

        pdf.ApplyWatermark(watermark, rotation: 45, opacity: 70,
            verticalAlignment: VerticalAlignment.Middle,
            horizontalAlignment: HorizontalAlignment.Center);

        pdf.SaveAs("watermarked_invoice.pdf");
    }
}
using IronPdf;
using IronPdf.Editing;

License.LicenseKey = "IRONSUITE.WRITERS.21046-907F5E67CC-AHYQW6L-RCHLPMRJMU4G-SET72XAF2JNY-LQK45E5JPLGW-XOLPVBEBLHV7-2LHKZRWUZWMO-5LNIZSPF4BM6-UHUH4R-T4MMJ4MEIYSQEA-DEPLOYMENT.TRIAL-LDG2MK.TRIAL.EXPIRES.16.NOV.2025";

var pdf = new IronPdf.PdfDocument("invoice.pdf");
string content = pdf.ExtractAllText();

var lines = content.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

foreach (var line in lines)
{
    if (string.Equals(line.Trim(), "DRAFT", StringComparison.OrdinalIgnoreCase))
    {
        Console.WriteLine("The document is a draft.");

        // Corrected HTML and CSS
        string watermark = @"<div style='color:red; font-size:72px; font-weight:bold;'>DRAFT</div>";

        pdf.ApplyWatermark(watermark, rotation: 45, opacity: 70,
            verticalAlignment: VerticalAlignment.Middle,
            horizontalAlignment: HorizontalAlignment.Center);

        pdf.SaveAs("watermarked_invoice.pdf");
    }
}
Imports Microsoft.VisualBasic
Imports IronPdf
Imports IronPdf.Editing

License.LicenseKey = "IRONSUITE.WRITERS.21046-907F5E67CC-AHYQW6L-RCHLPMRJMU4G-SET72XAF2JNY-LQK45E5JPLGW-XOLPVBEBLHV7-2LHKZRWUZWMO-5LNIZSPF4BM6-UHUH4R-T4MMJ4MEIYSQEA-DEPLOYMENT.TRIAL-LDG2MK.TRIAL.EXPIRES.16.NOV.2025"

Dim pdf = New IronPdf.PdfDocument("invoice.pdf")
Dim content As String = pdf.ExtractAllText()

Dim lines = content.Split( { ControlChars.Cr, ControlChars.Lf }, StringSplitOptions.RemoveEmptyEntries)

For Each line In lines
	If String.Equals(line.Trim(), "DRAFT", StringComparison.OrdinalIgnoreCase) Then
		Console.WriteLine("The document is a draft.")

		' Corrected HTML and CSS
		Dim watermark As String = "<div style='color:red; font-size:72px; font-weight:bold;'>DRAFT</div>"

		pdf.ApplyWatermark(watermark, rotation:= 45, opacity:= 70, verticalAlignment:= VerticalAlignment.Middle, horizontalAlignment:= HorizontalAlignment.Center)

		pdf.SaveAs("watermarked_invoice.pdf")
	End If
Next line
$vbLabelText   $csharpLabel

使用 string.Equals,我們可以檢查輸入 PDF 文件是否包含將其標記為草稿的文本,如果是,程序將在文件上應用我們的 "草稿" 水印並保存它。

輸出

水印輸出

使用 string.Equals 與 IronPDF 的最佳實踐

  • 始終指定 StringComparison,以避免由於文化或大小寫差異導致的錯誤。

  • 在比較用戶輸入或提取的文本時,使用 Trim() 或 Normalize()。

  • 對於大型文檔,僅提取必要的頁面或段落以減少開銷。

  • 將 string.Equals 與 Regex 或 Contains 結合使用進行混合字符串匹配策略。

為什麼 IronPDF 使這一切變得簡單

IronPDF 簡化了開發者與 PDF 的互動方式。 結合 C# 的 string.Equals,您可以在不使用樣板或第三方工具的情況下構建動態、智能的 PDF 工作流程。

IronPDF 的主要優勢:

  • 全文本提取和解析。

  • 輕鬆訪問元數據。

  • 使用原生 C# 邏輯進行有條件操作。

  • 不需要外部依賴項,如 Adobe 或 MS Office。

深入了解 StringComparison 選項

在 C# 中比較字符串時,StringComparison 選項的選擇可以極大地影響比較的行為和性能。 以下是最常用選項的快速概述:

  • Ordinal: 執行一個快速的逐字節比較,區分大小寫,並且不考慮文化。最適合精確匹配的場景,其中文化不重要。

  • OrdinalIgnoreCase: 與上面相同,但忽略大小寫差異。 在可能出現大小寫不一致的 PDF 文本提取場景中理想的選擇。

  • CurrentCulture: 考慮代碼運行所在環境的文化規則。 在比較應尊重當地語言規範的用戶面向文本時有用。 考慮當前文化,對於本地化字符串比較非常有用。

  • CurrentCultureIgnoreCase: 與上段相同,但忽略大小寫。

  • InvariantCultureInvariantCultureIgnoreCase: 在文化之間提供一致的比較,這對於全球化應用程序的字符串相等性至關重要。

選擇正確的選項可確保您的字符串比較行為可預測。 對於通過 IronPDF 提取的 PDF 文本,OrdinalIgnoreCase 通常是最佳選擇,兼具性能和易用性。

大型 PDF 文檔的性能考量

高效處理大型 PDF 是保持應用程序響應性的關鍵。 以下是一些提示:

  • 從特定頁面提取文本,而不是整個文件。

  • 當多次處理相同文檔時緩存提取的文本。

  • 使用 string.Equals 進行精確的等於檢查,使用 Contains 進行子字符串匹配,盡量避免昂貴的正則表達式操作。

  • 利用異步處理或並行化處理多個 PDF。

  • 在比較前清理和標準化字符串 (string str1, string str2),以避免由不可見字符或格式化造成的錯誤匹配。

實施這些技術可幫助您的 PDF 工作流程平穩擴展,同時保持比較準確性。

錯誤處理和故障排除提示

為了避免運行時問題並確保可靠性:

  • 防範空值以防止空引用異常,檢查對象 obj 或字符串是否為空,然後再進行比較。

  • 記錄提取的內容,以驗證運行時該方法返回什麼。

  • 使用 Trim() 和規範化處理尾隨空格和特殊的 Unicode 字符。

  • 在 PDF 加載和文本提取過程中加入異常處理。

  • 編寫涵蓋各種輸入場景的單元測試,包括大小寫敏感和大小寫不敏感比較。

最後的想法

C# string.Equals 是一種簡單而強大的方法,與 IronPDF 的強大 PDF 功能結合使用時會更加有效。 無論您是在驗證元數據、驗證提取的文本還是應用條件邏輯,這種組合賦予您對 .NET 中 PDF 自動化工作流程的全面控制。

🔗 立即開始使用 IronPDF

準備好開始用 C# 構建智能 PDF 工作流程了嗎? 下載 IronPDF NuGet 包 並探索 .NET PDF 生成、編輯和提取的全部能力。

👉 試用 IronPDF 免費試用版

常見問題解答

string.Equals 方法在 C# 中的用途是什麼?

C# 中的 string.Equals 方法用於比較字串物件是否相等。它提供了一種精確的方法來判斷兩個字串是否具有相同的值,這對於驗證元數據或 PDF 文檔中的提取文本等任務尤為重要。

IronPDF 如何增強 C# 應用程式中 string.Equals 的使用?

IronPDF 可以通過提供強大的 PDF 操作功能來增強 string.Equals 的使用,其中包括從 PDF 文檔中提取文本。這允許開發者將 string.Equals 用於比較和驗證作為 PDF 自動化任務一部分的提取文本。

為什麼字串比較在 PDF 文檔處理中很重要?

字串比較在 PDF 文檔處理中很重要,因為它可使開發者檢查提取的文本,驗證元數據,並根據特定的字串值有條件地修改文件,從而確保數據準確性並符合預期內容。

IronPDF 可以處理 PDF 中的元數據驗證嗎?

是的,IronPDF 可以處理 PDF 中的元數據驗證,允許開發者提取元數據並使用像 string.Equals 的方法來比較並驗證元數據是否符合指定標準。

IronPDF 中有哪些常見任務使用了 string.Equals?

在 IronPDF 中,常見任務包括檢查提取的文本是否符合標準,驗證 PDF 文件的元數據,以及在進一步處理之前確保文件中有特定字串出現。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。