Free Support Forum - aspose.com

How can find or Search the words that I specified in document?

How can find or Search the words that I specified in document?
For example,I have word document,there are the multi word text in the document, There are some other words,I write at random,aabddjfijaifjeijfijaifjifjaijgjigjia

My question is:How to use search function to find the word “random” in the word document?

Hi there,


Thanks for your inquiry. We suggest you please read the following article. Hope this helps you.

Find and Replace

Please let us know if you have any more queries.

I want to find Where words?That is: I specified words on what paragraph?

Hi there,


Thanks for your inquiry. Could you please attach your input Word document along with expected output? We will then provide you more information about your query along with code.

this is input file

How can find or Search the words that I specified in document?

For example,I have word document,there are the multi word text in the document, There are some other words,I write at random,aabddjfijaifjeijfijaifjifjaijgjigjia My question is:How to use search function to find the word "random" in the word document?

I want find The title that is fixed

Random random words1 that I want replace

random text words2 that I want replace

random word words3 that I want replace

<span lang=“EN-US” style=“font-size:10.0pt;font-family:“Arial”,sans-serif;
color:#333333;background:white”>The end.

Because I want to replace in the text of the text is random text, but the title of the random text in front is fixed,In sample text:I want find The title that is fixed,I hope to find a fixed by words,Then find a random text location

Hi there,


Thanks for sharing the detail. In your case, we suggest you following solution.

1) Please implement IReplacingCallback interface.
2) In IReplacingCallback.Replacing, create an instance of DocumentBuilder class.
3) Move the cursor to the matched node.
4) Insert the contents according to your requirements.
5) Remove the matched text.

Please use following code example to achieve your requirements. Hope this helps you.

Document doc = new Document(MyDir + “input.docx”);<o:p></o:p>

doc.Range.Replace("Random", "", new FindReplaceOptions { ReplacingCallback = new ReplaceHandlerText(), Direction = FindReplaceDirection.Backward});

doc.Save(MyDir + "output.docx");

class ReplaceHandlerText : IReplacingCallback

{

ReplaceAction IReplacingCallback.Replacing(ReplacingArgs e)

{

// This is a Run node that contains either the beginning or the complete match.

Node currentNode = e.MatchNode;

// The first (and may be the only) run can contain text before the match,

// in this case it is necessary to split the run.

if (e.MatchOffset > 0)

currentNode = SplitRun((Run)currentNode, e.MatchOffset);

ArrayList runs = new ArrayList();

// Find all runs that contain parts of the match string.

int remainingLength = e.Match.Value.Length;

while (

(remainingLength > 0) &&

(currentNode != null) &&

(currentNode.GetText().Length <= remainingLength))

{

runs.Add(currentNode);

remainingLength = remainingLength - currentNode.GetText().Length;

// Select the next Run node.

// Have to loop because there could be other nodes such as BookmarkStart etc.

do

{

currentNode = currentNode.NextSibling;

}

while ((currentNode != null) && (currentNode.NodeType != NodeType.Run));

}

// Split the last run that contains the match if there is any text left.

if ((currentNode != null) && (remainingLength > 0))

{

SplitRun((Run)currentNode, remainingLength);

runs.Add(currentNode);

}

DocumentBuilder builder = new DocumentBuilder((Document)e.MatchNode.Document);

builder.MoveTo((Run)runs[0]);

builder.Write("Replace text with Random");

// Remove matched text

foreach (Run run in runs)

run.Remove();

// Signal to the replace engine to do nothing because we have already done all what we wanted.

return ReplaceAction.Skip;

}

private static Run SplitRun(Run run, int position)

{

Run afterRun = (Run)run.Clone(true);

afterRun.Text = run.Text.Substring(position);

run.Text = run.Text.Substring(0, position);

run.ParentNode.InsertAfter(afterRun, run);

return afterRun;

}

}