Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 替换word中的文本_Vb.net - Fatal编程技术网

Vb.net 替换word中的文本

Vb.net 替换word中的文本,vb.net,Vb.net,我要替换来自的文本 参考号: 变成 参考编号:xyz1234 我的代码如下: Dim oReader As New StreamReader(Frm1.lblFileName.Text) Dim sLine As String = Nothing While Not oReader.EndOfStream sLine = oReader.ReadLine() If (Not String.IsNullOrEmpty(sLine)) Then If sLine.Co

我要替换来自的文本

参考号:

变成

参考编号:xyz1234

我的代码如下:

Dim oReader As New StreamReader(Frm1.lblFileName.Text)
Dim sLine As String = Nothing
While Not oReader.EndOfStream
    sLine = oReader.ReadLine()
    If (Not String.IsNullOrEmpty(sLine)) Then
        If sLine.Contains("Ref No") Then
            sLine.Replace("Ref No", "xyz1234")
        End If
    Else
    End If
End While
oReader.Close()
它不会将参考号替换为参考号xyz1234。

两件事:

更改:

   If sLine.Contains("Ref No") Then
      sLine.Replace("Ref No", "xyz1234")

您的逻辑是正确的,但是一旦您修改了字符串,您就不会对它做任何事情。Replace()不会就地修改字符串,但会返回一个新字符串,并执行字符串替换。因为你没有把它分配给任何东西,也没有打印它,它只是被扔掉了。你可能想做一些类似的事情

 StringBuilder sb = new StringBuilder();
。。然后

   If sLine.Contains("Ref No") Then
      sb.Append(sLine.Replace("Ref No", "xyz1234"))
   else sb.Append(sline)

但是,将整个文件读入一个字符串并对其进行一次替换会更容易。

从字面上看,您似乎遗漏了一些东西。最明显的是Replace()方法的输出必须分配给另一个字符串

那么,你的台词是:

sLine.Replace("Ref No", "xyz1234")
变成:

sLine = sLine.Replace("Ref No", "xyz1234")
此外,正如@Curt所指出的,根据您的描述,您的实际替代将是:

sLine = sLine.Replace("Ref No :", "Ref No : xyz1234")
我也看不出您是如何保留sLine中所做的更改的,但我假设这是因为您简化了示例。不用说,您需要在循环的每次迭代之后将sLine的值存储在某个地方。例如,某个链接:

Dim sLine As String
Dim sText As New Stringbuilder
Dim oReader As New StreamReader(Frm1.lblFileName.Text)
While Not oReader.EndOfStream
  sLine = oReader.ReadLine()
  If Not String.IsNullOrEmpty(sLine) AndAlso sLine.Contains("Ref No :") Then
    sLine = sLine.Replace("Ref No :", "Ref No : xyz1234")
  End If
  sText.AppendLine(sLine)
End While
oReader.Close()
Frm1.lblFileName.Text = sText.ToString()

我现在不做任何假设,但是您的代码没有显示如何以及如何读取DOCX文件。 假设它是DOCX文件:) 如果是,并且您没有DOCX阅读器,请查看“开放XML格式SDK”。 下一件事是,您必须将值放回保存字符串的变量中,并且您没有这样做,并且您没有将结果保存回DOCX文件

sLine=sLine.替换(“参考号”,“参考号:xyz1234”) 在读取文件并替换保存文件名中读取文本的字符串后,您刚刚关闭读取器,这是以原始文本的方式完成的,可能您还没有向我们展示整个代码


干杯,Mik

如果你想修改Word文档,你必须进行Word自动化(或者购买一个知道如何读写Word文件的商业图书馆)。下面是一篇可以让您开始的文章:是的,我使用docapi.Thnx得到结果。在这个例子中使用Replace是错误的。Replace返回一个带有替换项的新字符串,它不会修改现有字符串。我不理解你的评论:这正是我所说的。我的例子有什么问题?
Dim sLine As String
Dim sText As New Stringbuilder
Dim oReader As New StreamReader(Frm1.lblFileName.Text)
While Not oReader.EndOfStream
  sLine = oReader.ReadLine()
  If Not String.IsNullOrEmpty(sLine) AndAlso sLine.Contains("Ref No :") Then
    sLine = sLine.Replace("Ref No :", "Ref No : xyz1234")
  End If
  sText.AppendLine(sLine)
End While
oReader.Close()
Frm1.lblFileName.Text = sText.ToString()