[Solved] Replace Text in selection
Posted: Wed Mar 03, 2021 11:45 am
Hi
I have small problem. I would like to replace some text to another , but not i whole document , in selected range only . Below is my code:
In this code (c#) i select range between '"<el:strony>"' and '"<el:strony/>"' and i want to replace '"<el:imie />" to '"<el:imie />_1"' in this range. Object oDoc is Component all document.
If i use below code its works perfectly but for whole document.
How to do this? I want to keep formated text after replace (bolds , fonts ) its important.
I have small problem. I would like to replace some text to another , but not i whole document , in selected range only . Below is my code:
Code: Select all
XSearchDescriptor xSearchDecriptor1 = ((unoidl.com.sun.star.util.XSearchable)oDoc).createSearchDescriptor();
xSearchDecriptor1.setSearchString("<el:strony>");
XTextRange objAdresatStr = ((XTextRange)((unoidl.com.sun.star.util.XSearchable)oDoc).findFirst(xSearchDecriptor1)).getEnd();
xSearchDecriptor1 = ((unoidl.com.sun.star.util.XSearchable)oDoc).createSearchDescriptor();
xSearchDecriptor1.setSearchString("</el:strony>");
XTextRange objAdresatStop = ((XTextRange)((unoidl.com.sun.star.util.XSearchable)oDoc).findFirst(xSearchDecriptor1)).getStart();
XText xText = ((unoidl.com.sun.star.text.XTextDocument)oDoc).getText();
XTextCursor oCurs = (XTextCursor)xText.createTextCursorByRange(objAdresatStr);
oCurs.gotoRange(objAdresatStop, true);
XController xControler = ((unoidl.com.sun.star.frame.XModel)oDoc).getCurrentController();
// ((unoidl.com.sun.star.frame.XModel)oDoc).
string s = oCurs.getString();
; uno.Any anySel = new uno.Any(oCurs.GetType(), oCurs);
bool iSelect = ((unoidl.com.sun.star.view.XSelectionSupplier)xControler).select(anySel);
uno.Any selectedAny = ((unoidl.com.sun.star.view.XSelectionSupplier)xControler).getSelection();
bool b = selectedAny.hasValue();
// here i have error for oCurs ,
XReplaceDescriptor replaceSelec = ((XReplaceable)oCurs).createReplaceDescriptor();
replaceSelec.setSearchString("<el:imie />");
replaceSelec.setReplaceString("<el:imie />_1");
((XReplaceable)oCurs).replaceAll(replaceSelec);
unoidl.com.sun.star.datatransfer.XTransferable selectedContent = ((unoidl.com.sun.star.datatransfer.XTransferableSupplier)xControler).getTransferable();
oCurs.collapseToEnd();
((unoidl.com.sun.star.datatransfer.XTransferableSupplier)xControler).insertTransferable(selectedContent);
If i use below code its works perfectly but for whole document.
Code: Select all
XReplaceDescriptor replaceSelec = ((XReplaceable)oDoc).createReplaceDescriptor();
replaceSelec.setSearchString("<el:imie />");
replaceSelec.setReplaceString("<el:imie />_1");
((XReplaceable)oDoc).replaceAll(replaceSelec);