Word document handle with different way

  1. move a paragraph up and down
    (ex. I have paragraphs like,
    hi.
    I am Rabin.
    I am doing ASPOSEwork.)

if I want to move ** I am doing ASPOSEwork.** after hi. then how I will do?
excepted output :–>
hi.
I am doing ASPOSEwork.
I am Rabin.

  1. Delete text from paragraph
    // I am using above Example.
    if I want to delete ** Rabin ** from I am Rabin then how I will do?
    expected output:–>
    hi.
    I am .
    I am doing ASPOSEwork.)

  2. Replace some text in a paragraph
    // I am using above Example.
    if I want to Replace ** Rabin ** from I am Rabin with RabinS then how I will do?
    expected output:–>
    hi.
    I am RabinS.
    I am doing ASPOSEwork.)

  3. Add text at a particular place in a paragraph
    // I am using above Example.
    if I want to Add text ** Sam** after I am Rabin then how I will do?
    or before Rabin
    or after am

expected output:–>
hi.
I am Rabin Sam.
I am doing ASPOSEwork.)

@rabin.samanta,

You can meet this requirement by using the following code:

Document doc = new Document("E:\\temp\\input.docx");
Paragraph lastPara = doc.FirstSection.Body.LastParagraph;
lastPara.ParentNode.InsertBefore(lastPara, lastPara.PreviousSibling);
doc.Save("E:\\Temp\\19.3.docx"); 

Regarding 2 and 4, please try using the following code:

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), (0) + (position));
    run.ParentNode.InsertAfter(afterRun, run);
    return afterRun;
}

private class ReplaceEvaluator : 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);

        // This array is used to store all nodes of the match for further removing.
        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);
        }


        //// to insert new text
        //DocumentBuilder builder = new
        //DocumentBuilder((Document)e.MatchNode.Document);

        //builder.MoveTo((Run)runs[runs.Count - 1]);
        //builder.Write("Sam ");
                               
        //// To delete the sequence
        //foreach (Run run in runs)
        //    run.Remove();               

        return ReplaceAction.Skip;
    }
}

Document doc = new Document("E:\\temp\\input.docx");

FindReplaceOptions opts = new FindReplaceOptions();
opts.Direction = FindReplaceDirection.Backward;
opts.ReplacingCallback = new ReplaceEvaluator();

doc.Range.Replace(new Regex("Rabin"), "", opts);

doc.Save("E:\\Temp\\19.3.docx");

And regarding,

Please refer to the following section of documentation:
Find and Replace

Hope, this helps.

i am not able to import ParentNode
i am using bellow dependency.

image.png (13.8 KB)

	<dependency>
		<groupId>com.aspose</groupId>
		<artifactId>aspose-words</artifactId>
		<version>18.11</version>
		<classifier>jdk16</classifier>
	</dependency>

@rabin.samanta,

Here is Java equivalent of that code:

Document doc = new Document("E:\\temp\\input.docx");
Paragraph lastPara = doc.getFirstSection().getBody().getLastParagraph();
lastPara.getParentNode().insertBefore(lastPara, lastPara.getPreviousSibling());
doc.save("E:\\Temp\\19.3.docx");

Please also check the following article:

@awais.hafeez

thanks…