我想使用C#创建一个世界文档。 所以这是我替换word文档变量的代码。
private void FindAndReplace(Microsoft.Office.Interop.Word.Application WordApp, object findText, object replaceWithText)
{
try {
object matchCase = true;
object matchWholeWord = true;
object matchWildCards = false;
object matchSoundsLike = false;
object nmatchAllWordForms = 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 = 2;
object wrap = 1;
WordApp.Selection.Find.Execute(ref findText,
ref matchCase, ref matchWholeWord,
ref matchWildCards, ref matchSoundsLike,
ref nmatchAllWordForms, ref forward,
ref wrap, ref format, ref replaceWithText,
ref replace, ref matchKashida,
ref matchDiacritics, ref matchAlefHamza,
ref matchControl);
} catch (Exception error) {
lblerror.Visible = true;
lblerror.Text = error.ToString();
}
}
但是在这里,如果“replaceWithText”过于孤立,则会出现错误并且显示
String parameter too long.
那么如何替换长字符串?
答案 0 :(得分:5)
而不是使用Find.Execute()替换:找到文本,获取其位置,插入新文本。这不会限制你在新字符串的长度。
替换特定文本的示例
// Find text
Range range = doc.Content;
range.Find.Execute(findText);
range.Text = "new text...";
在特定文本
之后添加新文本的示例// Find text
Range range = doc.Content;
range.Find.Execute(findText);
// Define new range
range = doc.Range(range.End + 1, range.End + 1);
range.Text = "new text...";
答案 1 :(得分:0)
只需将长字符串拆分为例如子串的数组,字符..(无论你想要什么)并多次调用你的FindAndReplace(..)(对于你所有新生成的数组项)。
答案 2 :(得分:0)
我已经尝试过此代码
Range range = doc.Content;
range.Find.Execute(findText);
// Define new range
range = doc.Range(range.End + 1, range.End + 1);
range.Text = "new text...";
问题是(它取代了所有文件),我只是想替换例如“ textwanttoreplace”之类的特定文本