C# 如何处理word中文本范围之间的不间断连字符?
我在word中有一些带有不间断连字符的文本。我需要输出的文本。但是我正在删除不间断连字符的文本C# 如何处理word中文本范围之间的不间断连字符?,c#,text,ms-word,range,C#,Text,Ms Word,Range,我在word中有一些带有不间断连字符的文本。我需要输出的文本。但是我正在删除不间断连字符的文本 Word.Range rangeObj = _wordDoc.Range(ref x, ref y); txt += rangeObj.Text; 我正在使用上面的代码。在txt变量中,我得到了输出,但删除了不间断的连字符。 提前谢谢。我不知道c#但是在VBA范围内。FormattedText很好用。尝试rangeObj.FormattedText 例如,这在VBA中工作得很好 Sub test()
Word.Range rangeObj = _wordDoc.Range(ref x, ref y);
txt += rangeObj.Text;
我正在使用上面的代码。在txt变量中,我得到了输出,但删除了不间断的连字符。
提前谢谢。我不知道c#但是在VBA范围内。FormattedText
很好用。尝试rangeObj.FormattedText
例如,这在VBA中工作得很好
Sub test()
Set oRng = ActiveDocument.Paragraphs(1).Range
s = oRng.FormattedText
oRng.InsertAfter s
Set oRng = Nothing
End Sub
我理解的问题是:如何用普通破折号(ANSI 45)替换从单词范围读取的文本字符串中的任何不间断连字符(ANSI 30) 这可以在VBA中使用
Replace
功能完成。例如:
txt = Replace(rangeObj.Text, Chr(30), "-")
string selText = wdApp.Selection.Text;
char cDash = (char) 45;
char cNonBreakHyph = (char) 30;
System.Diagnostics.Debug.Print(selText.Replace(cNonBreakHyph, cDash));
当然,C#使用.NET框架提供的工具。这里是Replace
方法,它可以用字符串替换字符串或用字符替换字符。由于非中断连字符需要由其字符代码表示,因此字符重载是正确的。例如:
txt = Replace(rangeObj.Text, Chr(30), "-")
string selText = wdApp.Selection.Text;
char cDash = (char) 45;
char cNonBreakHyph = (char) 30;
System.Diagnostics.Debug.Print(selText.Replace(cNonBreakHyph, cDash));
我有一个解决方案。我们可以使用上面的代码行将非中断连字符替换为普通连字符:请参阅。Chr(160)=非中断空格不是纯文本符号<代码>范围。格式化文本你能帮忙吗?@James Rahul的建议“不管用”对你有什么好处?对于包含特殊字符的文本,您实际需要/想要做什么?@Cindy,我想在txt中使用连字符。例如,假设word文档中有两行。1.正常连字符2。不间断连字符。当我阅读rangeObj.Text时,我希望两个文本都带有连字符。但是我得到了1.2的正常连字符。不间断连字符。2中没有连字符。您没有提到用不间断连字符替换连字符。Metod无法工作,因为我们使用object
range
的接口方法。请参阅使用range编写代码。FormattedText
和代码错误!您没有告诉我们您想用简单连字符替换不间断连字符,因为它在ms word的find属性中非常简单。您的正则表达式将交替与字符类语法混淆。字符类匹配方括号中的任何一个字符,例如[abc],不要与(A | b | c)混淆。正则表达式所做的是用连字符替换任何管道字符(|)。