Przejdź do treści stopki
POMOC .NET

C# String Equals (Jak to działa dla deweloperów)

Podczas pracy z dokumentami PDF w aplikacjach C# porównywanie ciągów znaków jest zaskakująco częstym zadaniem, niezależnie od tego, czy sprawdzasz wyodrębniony tekst, weryfikujesz metadane, czy warunkowo modyfikujesz dokumenty. Metoda string.Equals w języku C# zapewnia precyzyjny sposób porównywania obiektów typu string, a w połączeniu z IronPDF staje się potężnym narzędziem w zestawie narzędzi do automatyzacji obsługi plików PDF.

W tym artykule omówimy, czym jest string.Equals, dlaczego ma znaczenie w .NET oraz jak można go efektywnie wykorzystać w połączeniu z IronPDF, wiodącą biblioteką .NET do generowania i edycji plików PDF.

Czym jest string.Equals w języku C#?

Metoda string equals w języku C, znana w C# jako string.Equals, służy do porównywania zawartości dwóch parametrów reprezentujących ciągi znaków lub inne kompatybilne obiekty. Można przekazać albo zwykłe wartości typu string, albo obiekt typu, który zostanie przekształcony na ciąg znaków podczas porównywania. W przeciwieństwie do operatora ==, który jest cukrem syntaktycznym dla wyrażenia equals string, użycie string.Equals pozwala wprost na:

  • Określ reguły porównywania (takie jak porównywanie z uwzględnieniem wielkości liter lub bez uwzględnienia wielkości liter).

  • Należy unikać niejasności związanych z operatorami wieloznacznymi.

  • Popraw czytelność logiki warunkowej.

W platformie .NET Framework sygnatura metody często wygląda następująco:

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

W tym przypadku public bool oznacza, że wartość zwracana będzie zawsze true lub false w zależności od wyniku porównania.

Podstawowa składnia

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

Ta metoda przyjmuje dwa parametry: dwa ciągi znaków lub obiekty typu string do porównania oraz, opcjonalnie, typ porównania, które ma zostać wykonane. Wartość zwracana jest typu boolean. Metoda zwróci wartość true, jeśli oba argumenty są równe zgodnie z regułami porównania, w przeciwnym razie zwróci wartość false.

Można porównać dwa ciągi znaków, korzystając z różnych opcji StringComparison, takich jak:

  • Porządkowe (porównanie binarne, porównanie z uwzględnieniem wielkości liter)

  • OrdinalIgnoreCase (porównanie bez uwzględniania wielkości liter)

  • CurrentCulture

  • InvariantCultureIgnoreCase

Jak to działa z IronPDF

IronPDF to potężna biblioteka .NET do obsługi plików PDF, która umożliwia wyszukiwanie, wyodrębnianie i edycję tekstu w dokumentach PDF. Korzystając z metody string.Equals, można:

  • Porównaj wyodrębnioną wartość ciągu znaków ze znaną wartością.

  • Sprawdź pola metadanych, takie jak tytuł, autor i słowa kluczowe.

  • Edytuj dokumenty PDF warunkowo, dodając adnotacje, zaznaczenia lub znaki wodne na podstawie wyników porównania ciągów znaków.

Przeanalizujmy poniższe przykłady, w których funkcja string.Equals okazuje się przydatna w procesach IronPDF.

Przykład 1: Porównaj wyodrębniony tekst za pomocą string.Equals

Wyobraź sobie, że skanujesz fakturę w formacie PDF i chcesz sprawdzić, czy zawiera ona nazwę konkretnej firmy. Oto przykład pokazujący, jak uniknąć typowych pułapek, takich jak wyjątek odwołania do wartości null, oraz w jaki sposób metoda solidnie sprawdza równość.

W poniższym przykładzie zostanie wykorzystany ten plik PDF:

Plik wejściowy 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

Uwaga: Metoda zwraca wartość logiczną wskazującą, czy dwa obiekty typu string zawierają tę samą wartość.

Dlaczego to ma znaczenie:

Jak widać w poniższym wyniku, użycie string.Equals z StringComparison.OrdinalIgnoreCase gwarantuje, że "ACME CORPORATION" i "Acme Corporation" są traktowane jako równe — co jest niezbędne w scenariuszach OCR lub ekstrakcji tekstu, gdzie różnice w wielkości liter mogą powodować odmienne zachowanie.

Wynik

Wynik konsoli

Przykład 2: Sprawdzanie poprawności metadanych pliku PDF za pomocą metody string.Equals

Pliki PDF często zawierają pola metadanych, takie jak tytuł, autor i temat. IronPDF umożliwia odczyt tych właściwości, co ułatwia ich sprawdzanie i porównywanie.

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

Metoda ta jest szczególnie przydatna w systemach, w których walidacja oparta na metadanych zapobiega przetwarzaniu plików, które nie są ciągami znaków lub są nieprawidłowe.

Wynik

Wynik konsoli

Przykład 3: Dodaj znak wodny na podstawie dopasowania tekstu

Możesz chcieć automatycznie umieszczać znak wodny w dokumentach PDF zawierających określone słowa kluczowe. Oto jak to zrobić:

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

Korzystając z funkcji string.Equals, możemy sprawdzić, czy wprowadzony dokument PDF zawiera tekst oznaczający go jako wersję roboczą, a jeśli tak, program nałoży na dokument nasz znak wodny "DRAFT" i go zapisze.

Wynik

Wynik z znakiem wodnym

Najlepsze praktyki dotyczące używania string.Equals z IronPDF

  • Zawsze należy określić StringComparison, co pozwala uniknąć błędów wynikających z różnic kulturowych lub wielkości liter.

  • Używaj funkcji Trim() lub Normalize() podczas porównywania tekstu wprowadzonego przez użytkownika lub wyodrębnionego.

  • W przypadku dużych dokumentów należy wyodrębnić tylko niezbędną stronę lub fragment, aby zmniejszyć obciążenie.

  • Połącz string.Equals z Regex lub Contains, aby uzyskać hybrydowe strategie dopasowywania ciągów znaków.

Dlaczego IronPDF ułatwia pracę

IronPDF usprawnia sposób, w jaki programiści korzystają z plików PDF. W połączeniu z metodą string.Equals języka C# umożliwia tworzenie dynamicznych, inteligentnych procesów pracy z plikami PDF bez konieczności stosowania szablonowych rozwiązań lub narzędzi innych firm.

Kluczowe zalety IronPDF:

  • Pełne wyodrębnianie i analizowanie tekstu.

  • Łatwy dostęp do metadanych.

  • Manipulacja warunkowa z wykorzystaniem natywnej logiki C#.

  • Nie ma potrzeby korzystania z zewnętrznych zależności, takich jak Adobe czy MS Office.

Dogłębna analiza opcji StringComparison

Podczas porównywania ciągów znaków w języku C# wybór opcji StringComparison może mieć duży wpływ na zachowanie i wydajność porównań. Oto krótki przegląd najczęściej używanych opcji:

  • Ordinal: Wykonuje szybkie porównanie bajt po bajcie, uwzględniające wielkość liter i nie uwzględniające ustawień regionalnych. Najlepsze rozwiązanie w przypadku dokładnych dopasowań, gdzie ustawienia regionalne nie mają znaczenia.

  • OrdinalIgnoreCase: Tak samo jak powyżej, ale ignoruje różnice w wielkości liter. Idealny do scenariuszy takich jak ekstrakcja tekstu z plików PDF, gdzie mogą wystąpić niespójności w wielkości liter.

  • CurrentCulture: Uwzględnia reguły kulturowe środowiska, w którym działa kod. Przydatne przy porównywaniu tekstów przeznaczonych dla użytkowników, które powinny być zgodne z normami językowymi danego regionu. Należy wziąć pod uwagę aktualną kulturę, co jest przydatne przy porównywaniu zlokalizowanych ciągów znaków.

  • CurrentCultureIgnoreCase: Tak samo jak powyżej, ale z pominięciem wielkości liter.

  • InvariantCulture i InvariantCultureIgnoreCase: Zapewniają spójne porównanie między kulturami, co ma kluczowe znaczenie dla równości ciągów znaków w aplikacjach zglobalizowanych.

Wybór właściwej opcji gwarantuje, że porównania ciągów znaków będą przebiegać w przewidywalny sposób. W przypadku tekstu z plików PDF wyodrębnionego za pomocą IronPDF często najlepszym wyborem jest OrdinalIgnoreCase, zapewniający równowagę między wydajnością a użytecznością.

Kwestie związane z wydajnością w przypadku dużych dokumentów PDF

Efektywna obsługa dużych plików PDF ma kluczowe znaczenie dla utrzymania responsywności aplikacji. Oto kilka wskazówek:

  • Wyodrębnij tekst z określonych stron, a nie z całego pliku.

  • Buforuj wyodrębniony tekst podczas wielokrotnego przetwarzania tego samego dokumentu.

  • Używaj string.Equals do sprawdzania dokładnej zgodności i Contains do dopasowywania podciągów, unikając w miarę możliwości kosztownych operacji wyrażeniami regularnymi.

  • Wykorzystaj przetwarzanie asynchroniczne lub równoległe, aby obsługiwać wiele plików PDF jednocześnie.

  • Przed porównaniem należy oczyścić i znormalizować ciągi znaków (string str1, string str2), aby uniknąć fałszywych niezgodności spowodowanych niewidocznymi znakami lub formatowaniem.

Wdrożenie tych technik pomaga w płynnym skalowaniu procesów związanych z plikami PDF, zachowując jednocześnie dokładność porównań.

Wskazówki dotyczące obsługi błędów i debugowania

Aby uniknąć problemów podczas działania i zapewnić niezawodność:

  • Należy zabezpieczyć się przed wartościami null, aby zapobiec wyjątkom odwołania do wartości null, sprawdzając przed porównaniem, czy obiekt obj lub ciągi znaków nie są null.

  • Rejestruj wyodrębnione treści, aby sprawdzić, co zwraca metoda w czasie wykonywania.

  • Użyj funkcji Trim() i normalizacji, aby obsłużyć spacje końcowe i specjalne znaki Unicode.

  • Uwzględnij obsługę wyjątków związanych z ładowaniem plików PDF i wyodrębnianiem tekstu.

  • Napisz testy jednostkowe obejmujące różne scenariusze wejściowe, w tym porównania z uwzględnieniem wielkości liter i bez uwzględnienia wielkości liter.

Podsumowanie

Metoda string.Equals w języku C# to prosta, ale potężna funkcja, która staje się jeszcze bardziej skuteczna w połączeniu z rozbudowanymi funkcjami obsługi plików PDF oferowanymi przez IronPDF. Niezależnie od tego, czy weryfikujesz metadane, sprawdzasz poprawność wyodrębnionego tekstu, czy stosujesz logikę warunkową, ta kombinacja zapewnia pełną kontrolę nad procesami automatyzacji plików PDF w środowisku .NET.

🔗 Zacznij korzystać z IronPDF już dziś

Gotowy do tworzenia inteligentnych procesów pracy z plikami PDF w języku C#? Pobierz pakiet IronPDF NuGet i odkryj pełen potencjał generowania, edycji i wyodrębniania plików PDF w środowisku .NET.

👉 Wypróbuj IronPDF za darmo dzięki bezpłatnej wersji próbnej.

Często Zadawane Pytania

Jaki jest cel metody string.Equals w języku C#?

Metoda string.Equals w języku C# służy do porównywania obiektów typu string pod kątem równości. Zapewnia ona precyzyjny sposób ustalenia, czy dwa ciągi znaków mają tę samą wartość, co jest niezbędne w zadaniach takich jak weryfikacja metadanych lub wyodrębnionego tekstu w dokumentach PDF.

W jaki sposób IronPDF może usprawnić korzystanie z metody string.Equals w aplikacjach napisanych w języku C#?

IronPDF może usprawnić korzystanie z funkcji string.Equals, zapewniając solidne możliwości manipulacji plikami PDF, w tym wyodrębnianie tekstu z dokumentów PDF. Dzięki temu programiści mogą wykorzystywać string.Equals do porównywania i weryfikacji wyodrębnionego tekstu w ramach zadań związanych z automatyzacją plików PDF.

Dlaczego porównywanie ciągów znaków jest ważne podczas obsługi dokumentów PDF?

Porównanie ciągów znaków jest ważne w obsłudze dokumentów PDF, ponieważ umożliwia programistom sprawdzanie wyodrębnionego tekstu, weryfikację metadanych oraz warunkową modyfikację dokumentów w oparciu o określone wartości ciągów znaków, zapewniając dokładność danych i zgodność z oczekiwaną treścią.

Czy IronPDF obsługuje weryfikację metadanych w plikach PDF?

Tak, IronPDF umożliwia weryfikację metadanych w plikach PDF, pozwalając programistom na wyodrębnianie metadanych i korzystanie z metod takich jak string.Equals w celu porównania i sprawdzenia, czy metadane spełniają określone kryteria.

Jakie są typowe zadania, w których można używać string.Equals w połączeniu z IronPDF?

Typowe zadania, w których string.Equals może być używane z IronPDF, obejmują sprawdzanie, czy wyodrębniony tekst spełnia kryteria, weryfikację metadanych dokumentu PDF oraz upewnianie się, że określone ciągi znaków występują w dokumencie przed dalszym przetwarzaniem.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczą...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie