替换单词中的文字

时间:2013-07-08 05:38:48

标签: 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.Contains("Ref No") Then
            sLine.Replace("Ref No", "xyz1234")
        End If
    Else
    End If
End While
oReader.Close()

它不会取代Ref No:with Ref No:xyz1234。

3 个答案:

答案 0 :(得分:3)

将代码视为面值,似乎你错过了几件事。最明显的是必须将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()

答案 1 :(得分:2)

两件事:

变化:

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

   If sLine.Contains("Ref No") Then
      sLine.Replace("Ref No", "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)

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

答案 2 :(得分:0)

我现在没有做任何事情,但是您的代码没有显示您如何以及您阅读DOCX文件的内容。 假设它是一个DOCX文件:) 如果是,并且您没有DOCX阅读器,请查看“Open XML Format SDK”。 接下来的事情是,您必须将值重新放入保存字符串的变量中,并且您还没有这样做,并且您没有将结果保存回DOCX文件。

sLine = sLine.Replace(“Ref No”,“Ref No:xyz1234”) 您只是在阅读完文件后关闭阅读器并对保存文件名中的读取文本的字符串进行替换,这是以原始文本方式完成的,或者您可能没有向我们展示整个代码。

干杯,Mik