跳至页脚内容
.NET 帮助

C# String Equals(开发者用法)

在 C# 应用程序中处理 PDF 文档时,比较字符串是一个非常常见的任务,无论是检查提取的文本、验证元数据,还是有条件地修改文档。 string.Equals 方法在 C# 中提供了一种精确的方式来比较字符串对象,并且当与 IronPDF 结合使用时,它成为您 PDF 自动化工具包中的强大工具。

在本文中,我们将探讨什么是 string.Equals,它在 .NET 中的重要性,以及如何有效地将其与 IronPDF 结合使用,这是用于生成和操作的领先 .NET PDF 库。

什么是 C# 中的 string.Equals?

C 字符串等于方法,在 C# 中称为 string.Equals,用于比较两个参数的内容,这些参数可以是字符串或其他兼容对象。 您可以传递普通的字符串值,也可以是将在比较过程中转换为字符串的类型对象。 与 == 操作符不同的是,它是 equals string 的语法糖,显式地使用 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

注意:该方法返回一个布尔值,指示两个字符串对象是否包含相同的值。

为何重要:

正如我们在以下输出中所见,使用 string.Equals 与 StringComparison.OrdinalIgnoreCase 确保 “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 文档是否包含标记为草稿的文本,如果是,程序将对文档应用我们的 “DRAFT” 水印并保存。

输出

水印输出

使用 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

常见问题解答

C# 中 string.Equals 方法的目的是什么?

C# 中的 string.Equals 方法用于比较字符串对象的相等性。它提供了一种精确的方法来确定两个字符串是否具有相同的值,这对于验证 PDF 文档中的元数据或提取的文本等任务是必不可少的。

IronPDF 如何增强 string.Equals 在 C# 应用程序中的使用?

IronPDF 能通过提供强大的 PDF 操作功能来增强 string.Equals 的使用,这包括从 PDF 文档中提取文本。这使开发人员能够利用 string.Equals 作为其 PDF 自动化任务的一部分来比较和验证提取的文本。

为什么字符串比较在 PDF 文档处理中很重要?

字符串比较在 PDF 文档处理中很重要,因为它使开发人员能够检查提取的文本、验证元数据,并基于特定的字符串值有条件地修改文档,从而确保数据的准确性和符合预期的内容。

IronPDF 可以处理 PDF 中的元数据验证吗?

是的,IronPDF 可以处理 PDF 中的元数据验证,允许开发人员提取元数据并使用类似 string.Equals 的方法来比较和验证元数据是否符合指定标准。

在何种常见任务中可能会将 string.Equals 与 IronPDF 一起使用?

在一些常见任务中可能会将 string.Equals 和 IronPDF 一起使用,包括检查提取的文本是否符合标准、验证 PDF 文档元数据、以及在进一步处理前确保文档中出现特定字符串。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。