分隔文件 - 删除开始和尾随空格,以及空白空间值(Notepad ++和Excel)

时间:2015-12-22 18:47:19

标签: excel notepad++

我有一个以管道分隔和半固定宽度的文件。我的意思是,这些值看起来像这样:

void CMyWnd::foo()
{
    CWnd *check = GetDlgItem(IDC_CHECK1);
    if (check)
    {
        CString str;
        check->GetWindowText(str);

        CClientDC dc(this);
        dc.SelectObject(GetFont());
        int width = dc.GetTextExtent(str).cx; //get width

        //test to see where the lines are
        CRect rcheck;
        check->GetWindowRect(&rcheck); //rect in screen coordinates

        POINT pt = { 0 };
        ScreenToClient(&pt);
        rcheck.OffsetRect(pt);  //rect is relative to top-left of parent

        dc.SelectObject(GetStockObject(NULL_BRUSH));
        dc.SelectObject(GetStockObject(BLACK_PEN));

        dc.MoveTo(rcheck.right, rcheck.bottom + 1);
        dc.LineTo(rcheck.right - w, rcheck.bottom + 1);
    }
}

我的目标是删除所有开始的空格,尾随空格,以及空分隔符中有空格的部分(例如,您在上面的四到六之间看到)。完成后,我打算在Excel中使用该文件。

我知道我可以通过将整个文件导入Excel并执行 TRIM()命令来处理空白区域,但这对于非常“宽”的文档非常耗时。

我目前的解决方案是使用Notepad ++解决这个问题,并使用一系列查找和替换命令:

  1. 修剪尾随空格:
    • 找到:one|two two|three three | four four| | six six |seven seven eight eight| nine nine |
    • 替换为:(\S+)\s+[|]
  2. 修剪开头的空格:
    • 找到:\1|
    • 替换为:([|])\s+([A-Za-z])
  3. 从空列中修剪空格:
    • 找到:\1\2
    • 替换为:[|]\s+[|]
  4. ...然后导入Excel。

    我可以使用更简单的单一查找和替换命令,还是应该将它们放在宏中?

2 个答案:

答案 0 :(得分:2)

怎么样:

找到:\s*\|\s*
替换为:|

修改
\s更改为\h以避免匹配换行符。 \h代表水平空格:

找到:\h*\|\h*
替换为:|

答案 1 :(得分:0)

这听起来像是一个愚蠢的答案,但这就是我要这样做的方式。

打开替换并输入“|”并在替换put“|”中,点击替换直到你得到0更改。

然后用“|”做同样的事情并取代“|”

最后用“”(两个空格)和“”(一个空格)来做。

如果这不是你想要的,我道歉。我还不能发表评论。