Jak pracować z tekstem w .NET

Jak pracować z tekstem w .NET

Ten przewodnik pokazuje, jak pracować z tekstem w Aspose.Words FOSS dla .NET: formatowanie czcionki fragmentu, formatowanie akapitu, znajdowanie i zamienianie tekstu przy użyciu Range, dodawanie komentarza oraz przekształcanie akapitu w element listy. Aspose.Words FOSS dla .NET jest dostępny poprzez NuGet lub poprzez budowanie ze źródeł.

Poradnik krok po kroku

Krok 1: Pobierz bibliotekę

Sklonuj repozytorium i zbuduj Aspose.Words.sln w konfiguracji Release, a następnie dodaj odwołanie do projektu Aspose.Words.csproj z własnego projektu .NET, jak opisano w przewodniku instalacji. Dodaj using Aspose.Words; na początku każdego pliku pracującego z tekstem.


Krok 2: Formatuj czcionkę fragmentu

Obiekt Run to fragment tekstu posiadający jeden zestaw formatowania; jego właściwość Text zawiera treść w postaci czystego tekstu, a właściwość Font (obiekt Font) przechowuje formatowanie na poziomie znaków — Name, Size, Bold, Italic, Underline, Color, HighlightColor, Subscript/Superscript oraz StrikeThrough i inne. Font.ClearFormatting() przywraca fragment do wartości domyślnych. Fragmenty akapitu są dostępne poprzez jego właściwość Runs, będącą RunCollection. Ustawianie właściwości czcionki na DocumentBuilder.Font przed zapisaniem nowego tekstu jest zazwyczaj prostsze niż formatowanie poszczególnych obiektów Run po fakcie.


Krok 3: Formatuj akapit

Paragraph.ParagraphFormat (obiekt ParagraphFormat) kontroluje układ na poziomie akapitu: Alignment, wcięcia (LeftIndent, RightIndent, FirstLineIndent), odstępy (SpaceBefore, SpaceAfter, LineSpacing, LineSpacingRule) oraz zachowanie paginacji (KeepTogether, KeepWithNext, PageBreakBefore, WidowControl). ParagraphFormat.ClearFormatting() przywraca je do wartości domyślnych, a Paragraph.JoinRunsWithSameFormatting() scala sąsiadujące fragmenty o identycznym formatowaniu — przydatne po serii programowych modyfikacji, które pozostawiają akapit z większą liczbą fragmentów niż to konieczne.


Krok 4: Znajdź i zamień tekst w zakresie

Każdy węzeł zawierający treść — Document, Section, Paragraph lub Run — udostępnia Range. Range.Text zwraca czysty tekst wszystkiego, co znajduje się w tym zakresie, a Range.Replace(pattern, replacement) wykonuje znajdź-i-zamień ograniczone tylko do tego zakresu: wywołaj go na Paragraph’s Range, aby zmienić tekst tylko w jednym akapicie, lub na Document.Range, aby przeszukać cały dokument. Range.Delete() usuwa zawartość zakresu.


Krok 5: Dodaj komentarz

Utwórz Comment przy użyciu new Comment(doc, author, initial, dateTime), ustaw jego tekst za pomocą SetText(text), a następnie wstaw go do drzewa jak każdy inny węzeł. Comment.AddReply(author, initial, dateTime, text) dołącza wątkową odpowiedź — samą Comment — i RemoveReply(reply) / RemoveAllReplies() usuwają odpowiedzi. Komentarze dokumentu są zbierane w CommentCollection.


Krok 6: Zamień akapit w element listy

Paragraph.ListFormat (obiekt ListFormat) raportuje i kontroluje, czy akapit uczestniczy w liście: IsListItem i ListLevelNumber informują o jego bieżącym stanie. ApplyBulletDefault() zamienia akapit w domyślny punkt wypunktowany, a ApplyNumberDefault() w domyślny punkt numerowany; ListIndent() / ListOutdent() zmieniają poziom zagnieżdżenia, a RemoveNumbers() przywraca go do zwykłego akapitu.

Typowe problemy i rozwiązania

Formatowanie jednego RunCzcionka ’s nie zmienia sąsiedniego tekstu. Sąsiadujący tekst jest inny Run z własnym Font instancję. Albo zlokalizuj i sformatuj każdy dotknięty Run, albo ustaw formatowanie na DocumentBuilder.Font przed zapisaniem nowego tekstu.

Range.Replace zmienia tekst poza zamierzonym obszarem. Replace zostało wywołane na Document.Range zamiast węższego zakresu węzła. Wywołaj je na konkretnym Paragraph or Section którego tekst powinien zostać zmieniony.

Akapit wygląda jak element listy punktowanej, ale IsListItem is false. Punkt jest wpisanym tekstem, a nie prawdziwym formatowaniem listy. Zastosuj go z ListFormat.ApplyBulletDefault() zamiast.

Dokument kończy się o wiele większą liczbą Run węzłów niż oczekiwano. Powtarzające się małe programistyczne edycje dzielą ciągi bez ich ponownego łączenia. Wywołaj Paragraph.JoinRunsWithSameFormatting() po serii edycji.

Najczęściej zadawane pytania

Jaka jest różnica między Run a Paragraph?

Element Run jest fragmentem tekstu dzielącym jeden zestaw formatowania znaków (Font). Element Paragraph jest złożonym węzłem zawierającym jeden lub więcej fragmentów oraz formatowanie na poziomie akapitu (ParagraphFormat).

Jak odczytać cały tekst w dokumencie lub w pojedynczej sekcji?

Odczytaj właściwość Text tego węzła Range — document.Range.Text lub section.Range.Text.

Jak zamienić tekst tylko w jednym akapicie, a nie w całym dokumencie?

Wywołaj Replace(pattern, replacement) na Range tego Paragraph, nie na Document.Range.

Jak odpowiedzieć na istniejący komentarz?

Wywołaj Comment.AddReply(author, initial, dateTime, text) na oryginalnej instancji Comment.

Jak przekształcić element listy numerowanej z powrotem w zwykły akapit?

Wywołaj RemoveNumbers() na ListFormat tego akapitu.

Zobacz także

 Polski