NON-BREAKING HYPHEN in Word interop C# Range
Пожалуйста помоги. У меня есть код. Код ищет @"<(3)[-^~]([1-4])[-^~]([1-4])[-^~]([0-9]{1;3})?([0-9]{2})>" //(strings like 3-2-1-123-15 )
и размещает на нем гиперссылки. Но представьте, если бы
3-2-1-123-15
между числами стоит НЕПРЕРЫВНЫЙ ДЕФИС. Если я помещу диапазон в текст (string s = rng.Text;
)(Мне это нужно, потому что я использую ту же строку в своей гиперссылке: rngFound.Range.Hyperlinks.Add(rngFound.Range, hyperlink + rngFound.Text));
тогда у меня будет:
32112315
ситуация. Но как я могу иметь строку с "-". Я имею в виду, как я могу заменить НЕПРЕРЫВНЫЙ ДЕФИС на "-". Нужно ли заменить его в тексте слова?(Не очень хорошо). И если да, то как я могу это сделать с помощью функции:
Word.Selection FindAndReplace2(Word.Selection rngToSearch, object findText, object replaceWithText) //Find function
{
bool found = false;
//options
object matchCase = false;
object matchWholeWord = true;
object matchWildCards = true;
object matchSoundsLike = false;
object matchAllWordForms = false;
object forward = true;
object format = false;
object matchKashida = false;
object matchDiacritics = false;
object matchAlefHamza = false;
object matchControl = false;
object read_only = false;
object visible = true;
object replace = true;
object wrap = Word.WdFindWrap.wdFindStop; ;
//execute find and replace
found = rngToSearch.Find.Execute(ref findText, ref matchCase, ref matchWholeWord,
ref matchWildCards, ref matchSoundsLike, ref matchAllWordForms, ref forward, ref wrap, ref format, ref replaceWithText, ref replace,
ref matchKashida, ref matchDiacritics, ref matchAlefHamza, ref matchControl);
if (!found)
{
rngToSearch = null;
}
return rngToSearch;
1 ответ
Символ неразрывного дефиса - ANSI 31: ¬
. Его можно включить в строку поиска, как показано ниже.
(<(3)[-^~¬]([1-4])[-^~¬]([1-4])[-^~¬]([0-9]{1;3})?([0-9]{2})>
Мои тесты обнаружили как исходную строку в вопросе, так и строку, в которой ¬
заменил -
.
однажды Find
успешен, Range
Объект содержит искомый текст. Назначить это наstring
и выполнить Replace
только в строке (чтобы она не влияла на текст в документе, а только на строку, используемую для создания гиперссылки). Примерно так (непроверено):
string foundNr = rngToSearch.Text;
string hyperlinkNr = foundNr.Replace("¬", "-");