Vb.net 替换word中的文本
我要替换来自的文本 参考号: 变成 参考编号:xyz1234 我的代码如下: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
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()