НЕПЕРЕРЫВАЮЩАЯСЯ ГИФЕНА в Word interop C # Range - PullRequest
0 голосов
/ 18 октября 2019

Пожалуйста, помогите. У меня есть код. Код ищет @"<(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;) (мне это нужно, потому что я использую ту же строку в моей гиперссылке: r ngFound.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 Ответ

1 голос
/ 19 октября 2019

Символом для неразрывного дефиса является 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("¬", "-");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...