我有一些单词中带有不间断连字符的文本。我需要输出中的文本。但是我收到删除了不间断连字符的文本。
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