Word 互操作 C# 范围中的不间断连字符
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
情况。但是我怎么能有带“-”的字符串呢?我的意思是如何用“-”替换 NON-BREAKING HYPHEN。需要在word文本中替换吗?(不太好)。如果我这样做了,我该如何使用函数来做到这一点:
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;
不间断连字符的符号是 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("¬", "-");
请帮忙。
我有一个代码。该代码搜索 @"<(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
情况。但是我怎么能有带“-”的字符串呢?我的意思是如何用“-”替换 NON-BREAKING HYPHEN。需要在word文本中替换吗?(不太好)。如果我这样做了,我该如何使用函数来做到这一点:
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;
不间断连字符的符号是 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("¬", "-");