如何处理单词范围之间的文本中的不间断连字符



我有一些单词中带有不间断连字符的文本。我需要输出中的文本。但是我收到删除了不间断连字符的文本。

Word.Range rangeObj = _wordDoc.Range(ref x, ref y);
txt += rangeObj.Text;

我正在使用上面的代码。在 txt 变量中,我正在获得输出,但删除了不间断的连字符。提前谢谢。

txt = Regex.Replace(txt, "[u001e|u2011|u2013|u2014]", "-");

我为此有 1 个解决方案。 我们可以使用上面的代码行将不间断连字符替换为普通连字符:

我理解的问题是:如何将从单词范围读取的文本字符串中的任何不间断连字符 (ANSI 30) 替换为普通破折号 (ANSI 45)。

这可以使用Replace函数在 VBA 中完成。例如:

txt = Replace(rangeObj.Text, Chr(30), "-")

当然,C#使用.NET Framework提供的工具。这是Replace方法,它可以将字符串替换为字符串或将字符替换为字符。由于不间断连字符需要由其字符代码表示,因此 Char 重载正确。例如:

 string selText = wdApp.Selection.Text;
 char cDash = (char) 45;
 char cNonBreakHyph = (char) 30;
 System.Diagnostics.Debug.Print(selText.Replace(cNonBreakHyph, cDash));

我不知道 c#,但在 VBA 中Range.FormattedText工作正常。试试rangeObj.FormattedText

例如,这在 VBA 中工作正常。

Sub test()
    Set oRng = ActiveDocument.Paragraphs(1).Range
        s = oRng.FormattedText
        oRng.InsertAfter s
    Set oRng = Nothing
End Sub

最新更新