使用C sharp替换Ms Word文档中给定的文本

时间:2011-05-13 09:37:58

标签: c# text ms-word replace

我用c sharp进行编码,我需要找到如何替换给定文本中出现的文本 使用c sharp的MS-Word文档。

我在网上发现了很多关于替换第一次出现并替换所有出现但在给定事件中没有出现的例子。

我想要的一个例子如下:

  你好世界你好测试测试你好   ..你好...测试你好

  你好世界你好测试测试你好   ..树...测试你好

这是用'树'代替'hello'的第四次出现。

期待解决方案......

由于

2 个答案:

答案 0 :(得分:1)

尝试这样的事情......

static string ReplaceOccurrence(string input, string wordToReplace, string replaceWith, int occToReplace)
        {
            MatchCollection matches = Regex.Matches(input, string.Format("([\\w]*)", wordToReplace), RegexOptions.IgnoreCase);
            int occurrencesFound = 0;
            int captureIndex = 0;

            foreach (Match matchItem in matches)
            {
                if (matchItem.Value == wordToReplace)
                {
                    occurrencesFound++;
                    if (occurrencesFound == occToReplace)
                    {
                        captureIndex = matchItem.Index;
                        break;
                    }
                }
            }
            if (captureIndex > 0)
            {
                return string.Format("{0}{1}{2}", input.Substring(0, captureIndex), replaceWith, input.Substring(captureIndex + wordToReplace.Length));
            } else 
            {
                return input;
            }
        }

您必须在顶部放置一个using System.Text.RegularExpressions;

答案 1 :(得分:0)

这很有效。希望这就是你要找的东西:

        string s = "hello world hello test testing hello .. hello ... test hello";
        string[] value = { "hello" };
        string[] strList = s.Split(value,255,StringSplitOptions.None);
        string newStr = "";
        int replacePos = 4;
        for (int i = 0; i < strList.Length; i++)
        {
            if ((i != replacePos - 1) && (strList.Length != i + 1))
            {
                newStr += strList[i] + value[0];
            }
            else if (strList.Length != i + 1)
            {
                newStr += strList[i] + "tree";
            }
        }