删除文本文件中的额外空间

时间:2015-06-03 06:26:05

标签: vb.net excel notepad

我正在创建一个文本文件并将一些预先生成的Excel数据复制到其中。它工作正常。但输出如下:

MGSSP:IMSI= 40211xxxx   ;
MGSSP:IMSI= 40211xxxx   ;
MGSSP:IMSI= 40211xxxx   ;
...

我希望在=之后和;之前删除空格。那就是欲望输出应该是:

MGSSP:IMSI=40211xxxx;
MGSSP:IMSI=40211xxxx;
MGSSP:IMSI=40211xxxx;
...

我使用以下代码:

If My.Computer.FileSystem.FileExists("C:\Temp\mgssp_script.txt") Then
        Dim proc As Process = Process.Start("notepad.exe", "C:\Temp\mgssp_script.txt")
        System.Threading.Thread.Sleep(250)
        SendKeys.Send("^v")
    Else
        Dim file As System.IO.FileStream
        file = System.IO.File.Create("C:\Temp\mgssp_script.txt")
        file.Close()
        Dim proc As Process = Process.Start("notepad.exe", "C:\Temp\mgssp_script.txt")
        System.Threading.Thread.Sleep(250)
        SendKeys.Send("^V")
        file.Close()
    End If

2 个答案:

答案 0 :(得分:1)

您可以使用Clipboard命名空间中的System.Windows.Forms类将剪贴板数据导入您的程序。

如果这不是winforms应用程序,则必须添加对System.Windows.Forms的引用,并在代码中添加Imports语句:Imports System.Windows.Forms
此外,我的代码使用RegEx中的System.Text.RegularExpressions类,因此您也必须将其导入。

此代码将剪贴板数据导入程序,替换空格,并将更改后的字符串设置回剪贴板。

Dim ClipBoardlData As String
If Clipboard.ContainsText() Then
    ClipBoardlData = Clipboard.GetText()
    Dim re As Regex =  New Regex("=\s+") ' for the = and spaces after it
    ClipBoardlData = re.Replace(ClipBoardlData, "=")
    re = New Regex("\s+;") ' for the spaces before the ;
    ClipBoardlData = re.Replace(ClipBoardlData, ";") 
    Clipboard.SetText(ClipBoardlData)
End If

之后,您可以继续使用打开记事本应用程序的代码。

答案 1 :(得分:0)

Zohar代码的一点变化为我做了诀窍。这是代码:

Dim ClipBoardlData As String
    If Clipboard.ContainsText() Then
        ClipBoardlData = Clipboard.GetText()
        ClipBoardlData = ClipBoardlData.Replace("=  4", "=4") ' Fixed that line.
        Dim re As Regex = New Regex("\s+;")
        ClipBoardlData = re.Replace(ClipBoardlData, ";")
        Clipboard.SetText(ClipBoardlData)
    End If