Як працювати з текстом у .NET

Як працювати з текстом у .NET

У цьому посібнику показано, як працювати з текстом у Aspose.Words FOSS для .NET: форматування шрифту ділянки, форматування абзацу, пошук і заміна тексту за допомогою Range, додавання коментаря та перетворення абзацу в елемент списку. Aspose.Words FOSS для .NET доступний через NuGet або шляхом збірки з вихідного коду.

Покроковий посібник

Крок 1: Отримати бібліотеку

Клонуйте репозиторій і збирайте Aspose.Words.sln у конфігурації Release, потім додайте посилання на проект Aspose.Words.csproj з вашого власного проекту .NET, як описано в Посібник з встановлення. Додати using Aspose.Words; на початку будь-якого файлу, що працює з текстом.


Крок 2: Форматування шрифту ділянки

Run — це ділянка тексту, що має один набір форматування; її властивість Text містить вміст у вигляді простого тексту, а властивість Font (об’єкт Font) містить форматування на рівні символів — Name, Size, Bold, Italic, Underline, Color, HighlightColor, Subscript/Superscript та StrikeThrough серед інших. Font.ClearFormatting() скидає ділянку до значень за замовчуванням. Ділянки абзацу доступні через його властивість Runs, що є RunCollection. Встановлення властивостей шрифту на DocumentBuilder.Font перед записом нового тексту зазвичай простіше, ніж форматування окремих об’єктів Run після того.


Крок 3: Форматування абзацу

Paragraph.ParagraphFormat (об’єкт ParagraphFormat) керує розміткою на рівні абзацу: Alignment, відступами (LeftIndent, RightIndent, FirstLineIndent), інтервалами (SpaceBefore, SpaceAfter, LineSpacing, LineSpacingRule) та поведінкою пагінації (KeepTogether, KeepWithNext, PageBreakBefore, WidowControl). ParagraphFormat.ClearFormatting() скидає їх до типових значень, а Paragraph.JoinRunsWithSameFormatting() об’єднує суміжні ділянки з ідентичним форматуванням — корисно після серії програмних змін, які залишають абзац з більшою кількістю ділянок, ніж потрібно.


Крок 4: Пошук і заміна тексту в діапазоні

Кожен вузол, що містить вміст — Document, Section, Paragraph або Run — надає Range. Range.Text повертає простий текст усього, що знаходиться в цьому діапазоні, а Range.Replace(pattern, replacement) виконує пошук і заміну, обмежену лише цим діапазоном: викличте його на Paragraph’s Range, щоб змінити текст лише в одному абзаці, або на Document.Range, щоб шукати по всьому документу. Range.Delete() повністю видаляє вміст діапазону.


Крок 5: Додати коментар

Створіть Comment за допомогою new Comment(doc, author, initial, dateTime), задайте його текст за допомогою SetText(text), а потім вставте його в дерево, як будь-який інший вузол. Comment.AddReply(author, initial, dateTime, text) додає ланцюгову відповідь — саму Comment — і RemoveReply(reply) / RemoveAllReplies() знімають відповіді. Коментарі документа збираються у CommentCollection.


Крок 6: Перетворити абзац у пункт списку

Paragraph.ListFormat (об’єкт ListFormat) повідомляє та керує тим, чи бере абзац участь у списку: IsListItem і ListLevelNumber повідомляють його поточний стан. ApplyBulletDefault() перетворює абзац у типовий маркований пункт, а ApplyNumberDefault() — у типовий нумерований пункт; ListIndent() / ListOutdent() змінюють рівень вкладеності, а RemoveNumbers() повертає його до звичайного абзацу.

Загальні проблеми та виправлення

Форматування один Run’s шрифт не змінює сусідній текст. Сусідній текст є іншим Run з власним Font екземпляр. Або знайдіть і відформатуйте кожен уражений Run, або встановіть форматування на DocumentBuilder.Font перед записом нового тексту.

Range.Replace змінює текст поза передбаченою областю. Replace було викликано на Document.Range замість діапазону вузла більш вузького. Викличте його на конкретному Paragraph or Section чий текст має змінитися.

Абзац виглядає як пункт маркованого списку, але IsListItem is false. Маркер — це введений текст, а не реальне форматування списку. Застосуйте його за допомогою ListFormat.ApplyBulletDefault() замість цього.

Документ закінчується значно більшою кількістю Run вузлів, ніж очікувалося. Повторювані невеликі програмні правки розбивають ділянки без їх повторного з’єднання. Викличте Paragraph.JoinRunsWithSameFormatting() після групи правок.

Часто задавані питання

У чому різниця між Run та Paragraph?

A Run — це фрагмент тексту, що має один набір форматування символів (Font). A Paragraph — це складений вузол, що містить один або кілька ранів плюс форматування на рівні абзацу (ParagraphFormat).

Як прочитати весь текст у документі або в окремому розділі?

Прочитайте властивість Text цього вузла Range — document.Range.Text або section.Range.Text.

Як замінити текст лише в одному абзаці, а не в усьому документі?

Викличте Replace(pattern, replacement) на Range того Paragraph, а не на Document.Range.

Як відповісти на існуючий коментар?

Викличте Comment.AddReply(author, initial, dateTime, text) на оригінальному екземплярі Comment.

Як перетворити пункт нумерованого списку назад у звичайний абзац?

Викличте RemoveNumbers() на ListFormat того абзацу.

Дивіться також

 Українська