.NET でテキストを操作する方法

.NET でテキストを操作する方法

このガイドでは、Aspose.Words FOSS for .NET におけるテキスト操作方法を示します:ランのフォントの書式設定、段落の書式設定、Range を使用した検索と置換、コメントの追加、段落をリスト項目に変換する方法。Aspose.Words FOSS for .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 の Range で呼び出せば1つの段落のテキストのみを変更でき、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() はそれを普通の段落に戻します。

一般的な問題と対策

フォーマットの 1 つ Runのフォントは隣接するテキストを変更しません。 隣接するテキストは異なるものです 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 は、1つの文字書式設定のセット(Font)を共有するテキストのスパンです。A Paragraph は、1つ以上のランと段落レベルの書式設定(ParagraphFormat)を含む複合ノードです。

ドキュメント全体または単一のセクションのテキストをすべて読むにはどうすればよいですか?

そのノードの Range の Text プロパティを読み取ります — document.Range.Text または section.Range.Text。

ドキュメント全体ではなく、1つの段落内のテキストだけを置換するにはどうすればよいですか?

Paragraph の Range に対して Replace(pattern, replacement) を呼び出し、Document.Range には呼び出さないでください。

既存のコメントに返信するにはどうすればよいですか?

元の Comment インスタンスに対して Comment.AddReply(author, initial, dateTime, text) を呼び出します。

番号付きリスト項目を普通の段落に戻すにはどうすればよいですか?

その段落のListFormatに対してRemoveNumbers()を呼び出す。

参照

 日本語