Przejdź do treści stopki
POMOC .NET

C# Multiline String (jak to działa dla programistów)

Kiedy zaczynasz przygodę z C#, ciągi znaków to jedna z pierwszych rzeczy, których się uczysz. Jeśli kiedykolwiek tworzyłeś program Hello, World!, to znaczy, że miałeś już do czynienia z ciągami znaków.

W miarę jak będziesz coraz lepiej poznawać język C#, Twoje programy będą stawały się coraz bardziej złożone. Wkrótce zaczniesz pracować z ciągami znaków obejmującymi wiele wierszy. Jeśli jesteś teraz na tym etapie, to masz szczęście, ponieważ w tym przewodniku wyjaśnimy, czym są ciągi wielowierszowe i jak z nich korzystać. Zanurzmy się w temat.

Czym jest ciąg wielowierszowy?

Ciągi wielowierszowe są dokładnie tym, na co wskazuje ich nazwa — ciągami obejmującymi wiele wierszy, w przeciwieństwie do zwykłych ciągów jednowierszowych. Wielowierszowy ciąg znaków w języku C# tworzy się za pomocą literałów łańcuchowych, które są serią znaków ujętych w podwójne cudzysłowy. Aby utworzyć ciągi wielowierszowe, musimy użyć specjalnego typu literałów łańcuchowych zwanych literałami łańcuchowymi verbatim.

Magia ciągów znaków Verbatim

Aby utworzyć wielowierszowy literał łańcuchowy w języku C#, używamy łańcuchów dosłownych. Ciągi tekstowe pozostawione bez zmian są poprzedzone symbolem @ i pozwalają nam na umieszczanie znaków końca linii, znaków specjalnych, a nawet spacji bez użycia sekwencji escape.

Oto przykład wielowierszowego ciągu znaków wykorzystującego ciąg dosłowny:

string str = @"This is a
multiline string
in C#.";
string str = @"This is a
multiline string
in C#.";
Dim str As String = "This is a
multiline string
in C#."
$vbLabelText   $csharpLabel

Ciąg znaków str zawiera trzy wiersze, a każdy wiersz jest oddzielony znakiem końca wiersza. Zwróć uwagę na użycie symbolu @ w celu utworzenia ciągu znaków dosłownego.

Znaki escape w ciągach znaków typu verbatim

Mogą wystąpić sytuacje, w których konieczne będzie umieszczenie cudzysłowów w ciągu znaków cytowanego tekstu. W tym celu należy używać podwójnych cudzysłowów. Na przykład:

string str = @"This is a
""multiline""
string in C#.";
string str = @"This is a
""multiline""
string in C#.";
Dim str As String = "This is a
""multiline""
string in C#."
$vbLabelText   $csharpLabel

W tym przykładzie ciąg znaków str zawiera słowo "multiline" ujęte w podwójne cudzysłowy, co osiągnięto poprzez użycie podwójnych cudzysłowów w ciągu znaków dosłownych.

Łączenie ciągów wielowierszowych

Często może zaistnieć potrzeba połączenia ciągów wielowierszowych z innymi ciągami lub wartościami. Aby połączyć ciąg wielowierszowy z innymi wartościami ciągu, można użyć operatora +, tak samo jak w przypadku ciągów jednowierszowych.

string name = "John";
string str = @"Hello, " + name + @",
Welcome to the
world of C# multiline strings!";
string name = "John";
string str = @"Hello, " + name + @",
Welcome to the
world of C# multiline strings!";
Dim name As String = "John"
Dim str As String = "Hello, " & name & ",
Welcome to the
world of C# multiline strings!"
$vbLabelText   $csharpLabel

W tym miejscu połączyliśmy ciąg wielowierszowy z ciągiem jednowierszowym name.

Formatowanie ciągów wielowierszowych

W przypadku pracy z ciągami wielowierszowymi można je formatować za pomocą zmiennych lub wyrażeń. Aby sformatować ciąg wielowierszowy, można użyć symbolu $ do interpolacji ciągów.

int age = 25;
string str = $@"Hello, I am {age} years old,
and I am learning
C# multiline strings!";
int age = 25;
string str = $@"Hello, I am {age} years old,
and I am learning
C# multiline strings!";
Dim age As Integer = 25
Dim str As String = $"Hello, I am {age} years old,
and I am learning
C# multiline strings!"
$vbLabelText   $csharpLabel

Użyliśmy interpolacji ciągów znaków, aby umieścić wartość zmiennej age w ciągu wielowierszowym.

Konwersja ciągów wielowierszowych na ciągi jednowierszowe

Czasami może zaistnieć potrzeba przekształcenia ciągów wielowierszowych w ciągi jednowierszowe. Aby to osiągnąć, można użyć metody Replace do zastąpienia znaków końca linii spacją lub innym wybranym znakiem.

string multilineString = @"This is a
multiline string
in C#.";

string singleLineString = multilineString.Replace(Environment.NewLine, " ");
string multilineString = @"This is a
multiline string
in C#.";

string singleLineString = multilineString.Replace(Environment.NewLine, " ");
Dim multilineString As String = "This is a
multiline string
in C#."

Dim singleLineString As String = multilineString.Replace(Environment.NewLine, " ")
$vbLabelText   $csharpLabel

Zastąpiliśmy znaki końca linii w ciągu wielowierszowym spacją, uzyskując w ten sposób ciąg jednowierszowy.

Obsługa długich ciągów znaków

Czasami bardzo długie ciągi znaków mogą być trudne do odczytania w kodzie. Aby kod był bardziej czytelny, długie ciągi znaków można podzielić na wiele wierszy za pomocą operatora +.

string longString = "This is a very long string that " +
                    "needs to be split across " +
                    "multiple lines for better readability.";
string longString = "This is a very long string that " +
                    "needs to be split across " +
                    "multiple lines for better readability.";
Dim longString As String = "This is a very long string that " & "needs to be split across " & "multiple lines for better readability."
$vbLabelText   $csharpLabel

Podzieliliśmy długi ciąg znaków w jednej linii na trzy części i połączyliśmy je za pomocą operatora +, dzięki czemu kod stał się bardziej czytelny.

Tworzenie wielowierszowych literałów łańcuchowych za pomocą literałów łańcuchowych typu raw

W C# 10 wprowadzono nową funkcję o nazwie literały ciągów surowych. Pozwalają one na tworzenie wielowierszowych literałów łańcuchowych bez użycia symbolu @. Aby utworzyć literał ciągu znaków w postaci surowej, umieszczamy ciąg znaków w potrójnych cudzysłowach ("""). Literale łańcuchów surowych zachowują wszystkie znaki, w tym znaki końca linii, w potrójnych cudzysłowach. Na przykład:

string str = """This is a
multiline string
using raw string literals in C# 10.""";
string str = """This is a
multiline string
using raw string literals in C# 10.""";
Dim str As String = """This is a multiline string using raw string literals in C# 10."""
$vbLabelText   $csharpLabel

Stworzyliśmy ciąg wielowierszowy przy użyciu literałów ciągu surowego. Zwróć uwagę na użycie potrójnych cudzysłowów do ujęcia ciągu znaków.

Znaki escape w literałach łańcuchów surowych

Podobnie jak w przypadku ciągów dosłownych, może zaistnieć potrzeba umieszczenia cudzysłowów w naszych surowych literałach łańcuchowych. W tym celu możemy użyć podwójnych cudzysłowów. Na przykład:

string str = """This is a
""multiline""
string using raw string literals in C# 10.""";
string str = """This is a
""multiline""
string using raw string literals in C# 10.""";
Dim str As String = """This is a ""multiline"" string using raw string literals in C# 10."""
$vbLabelText   $csharpLabel

W literałach łańcuchów surowych umieściliśmy podwójne cudzysłowy, używając podwójnych cudzysłowów.

Łączenie literałów dosłownych i surowych

W niektórych przypadkach może być wskazane połączenie cech literałów dosłownych i surowych. Można to osiągnąć, używając symbolu @, po którym następują potrójne cudzysłowy.

string str = @"""This is a
multiline string
using both verbatim and raw string literals in C# 10.""";
string str = @"""This is a
multiline string
using both verbatim and raw string literals in C# 10.""";
Dim str As String = """This is a
multiline string
using both verbatim and raw string literals in C# 10."""
$vbLabelText   $csharpLabel

W tym przykładzie utworzyliśmy ciąg wielowierszowy przy użyciu zarówno literałów dosłownych, jak i surowych. Zwróć uwagę na użycie symbolu @, po którym następują potrójne cudzysłowy.

Wykorzystanie ciągów wielowierszowych do generowania plików PDF w IronPDF

IronPDF to lekka biblioteka .NET do obsługi plików PDF, zaprojektowana specjalnie z myślą o programistach stron internetowych. Dzięki temu czytanie, pisanie i edycja plików PDF staje się dziecinnie prosta, umożliwia konwersję wszelkiego rodzaju plików do formatu PDF, a ponadto można z niego korzystać w projektach .NET zarówno na komputery stacjonarne, jak i w sieci. Najlepsze jest to, że można wypróbować to rozwiązanie w środowisku programistycznym za darmo.

Oto jak wykorzystać wielowierszowy ciąg znaków HTML do utworzenia pliku PDF w IronPDF:

string name = "John";
string age = "25";
string content = $@"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {name}!</h1>
<p>You are {age} years old.</p>
<p>This is a
multiline string
used to generate a PDF
with IronPDF and dynamic content.</p>
</body>
</html>";

// Create a new PDF document using IronPDF
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderHtmlAsPdf(content).SaveAs("c://BioData.pdf");
string name = "John";
string age = "25";
string content = $@"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {name}!</h1>
<p>You are {age} years old.</p>
<p>This is a
multiline string
used to generate a PDF
with IronPDF and dynamic content.</p>
</body>
</html>";

// Create a new PDF document using IronPDF
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderHtmlAsPdf(content).SaveAs("c://BioData.pdf");
Dim name As String = "John"
Dim age As String = "25"
Dim content As String = $"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {name}!</h1>
<p>You are {age} years old.</p>
<p>This is a
multiline string
used to generate a PDF
with IronPDF and dynamic content.</p>
</body>
</html>"

' Create a new PDF document using IronPDF
Dim pdfDocument = New IronPdf.ChromePdfRenderer()
pdfDocument.RenderHtmlAsPdf(content).SaveAs("c://BioData.pdf")
$vbLabelText   $csharpLabel

W tym przykładzie użyliśmy interpolacji ciągów znaków, aby umieścić zmienne name i age w naszym wielowierszowym ciągu znaków, dzięki czemu treść naszego pliku PDF jest dynamiczna i można ją dostosowywać. Stworzyliśmy wielowierszowy ciąg znaków zawierający treść, którą chcieliśmy umieścić w pliku PDF. Następnie utworzyliśmy instancję klasy ChromePdfRenderer z przestrzeni nazw IronPDF i użyliśmy metody RenderHtmlAsPdf do konwersji wielowierszowej treści ciągu znaków na dokument PDF. Na koniec zapisaliśmy dokument PDF w pliku o nazwie "BioData.pdf".

Wnioski

To była krótka wycieczka po wszechstronnym świecie ciągów wielowierszowych. Teraz, gdy jesteś już profesjonalistą w zakresie ciągów wielowierszowych w języku C#, możesz zacząć wdrażać je w swoich projektach — na przykład tak, jak w powyższym przykładzie z IronPDF.

Chcesz wypróbować IronPDF? Możesz zacząć od 30-dniowego okresu próbnego IronPDF. Można z niego korzystać całkowicie za darmo do celów programistycznych, więc naprawdę możesz sprawdzić, na czym to polega. A jeśli spodoba Ci się to, co widzisz, cena licencji IronPDF zaczyna się już od $799. Aby uzyskać jeszcze większe oszczędności, sprawdź pakiet Iron Suite, w którym możesz otrzymać wszystkie dziewięć narzędzi Iron Software w cenie dwóch. Miłego kodowania!

Csharp Multiline String 2 related to Wnioski

Często Zadawane Pytania

Jak utworzyć napis wielowierszowy w C#?

W C# można utworzyć napis wielowierszowy używając literałów napisowych dosłownych, poprzedzając napis symbolem '@'. Pozwala to na bezpośrednie włączenie przerw w linii i specjalnych znaków w napisie.

Jaki jest cel używania literałów napisowych dosłownych w C#?

Literały napisowe dosłowne w C# są używane do tworzenia napisów, które zachowują przerwy w linii i specjalne znaki bez konieczności używania sekwencji ucieczkowych. Oznaczone są symbolem '@', co czyni je idealnymi do pisania napisów wielowierszowych.

Jak obsługiwać specjalne znaki, takie jak cudzysłowy, w napisach dosłownych?

W napisach dosłownych można włączyć cudzysłowy, używając podwójnych cudzysłowów. Na przykład, '@"To jest ""wielowierszowy"" napis."' pozwala na włączenie cudzysłowów w napisie.

Czym są surowe literały napisowe w C# 10 i jak działają?

Surowe literały napisowe wprowadzone w C# 10 pozwalają na tworzenie napisów wielowierszowych bez użycia symbolu '@'. Są one objęte potrójnymi cudzysłowami i zachowują wszystkie znaki, łącznie z przerwami w linii, dokładnie tak, jak się pojawiają.

Jak można używać napisów wielowierszowych w generowaniu PDF?

Napisy wielowierszowe mogą być używane do tworzenia dynamicznej zawartości w formacie HTML, której następnie można używać do konwersji na dokumenty PDF za pomocą bibliotek takich jak IronPDF, które wspierają konwersję HTML na PDF.

Czym jest interpolacja napisów i jak się ją stosuje do napisów wielowierszowych?

Interpolacja napisów w C# pozwala na wstawianie zmiennych lub wyrażeń w napisy używając symbolu '$'. Może być używana z napisami wielowierszowymi, aby bezproblemowo włączyć dynamiczną zawartość.

Jak przekonwertować napis wielowierszowy na jednoliniowy w C#?

Aby przekonwertować napis wielowierszowy na jednoliniowy, można użyć metody Replace, aby zastąpić przerwy w linii spacjami lub innym znakiem. Na przykład: multilineString.Replace(Environment.NewLine, " ").

Dlaczego deweloperzy powinni używać bibliotek do generowania PDF w aplikacjach .NET?

Biblioteki przeznaczone do generowania PDF w .NET, takie jak IronPDF, upraszczają proces czytania, pisania i manipulacji plikami PDF. Wspierają konwersję różnych typów plików na PDF, zapewniając potężne narzędzia dla aplikacji desktopowych i webowych.

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