删除多行文本里面重复值

游子 2015-04-16 09:13:59
text1是多行文本,里面有很多行数据,如果有重复的就删除,保留一个就好了。怎么操作???非常感谢
...全文
315 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Carlven2012 2015-04-19
  • 打赏
  • 举报
回复
是想要的下图这效果吗?
赵4老师 2015-04-17
  • 打赏
  • 举报
回复
仅供参考:
//文件1中的内容排序并去重,结果保存到文件2中
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXCHARS 128      //能处理的最大行宽,包括行尾的\n和字符串尾的\0
int MAXLINES=10000,MAXLINES2;
char *buf,*buf2;
int c,n,hh,i,L;
FILE *f;
char ln[MAXCHARS];
int ignore_case=0;
int icompare(const void *arg1,const void *arg2) {
   return stricmp((char *)arg1,(char *)arg2);
}
int compare(const void *arg1,const void *arg2) {
   return strcmp((char *)arg1,(char *)arg2);
}
int main(int argc,char **argv) {
    if (argc<3) {
        printf("Unique line. Designed by zhao4zhong1@163.com. 2012-08-20\n");
        printf("Usage: %s src.txt uniqued.txt [-i]\n",argv[0]);
        return 1;
    }
    if (argc>3) ignore_case=1;//若存在命令行参数3,忽略大小写
    f=fopen(argv[1],"r");
    if (NULL==f) {
        printf("Can not find file %s!\n",argv[1]);
        return 1;
    }
    buf=(char *)malloc(MAXLINES*MAXCHARS);
    if (NULL==buf) {
        fclose(f);
        printf("Can not malloc(%d LINES*%d CHARS)!\n",MAXLINES,MAXCHARS);
        return 2;
    }
    n=0;
    hh=0;
    i=0;
    while (1) {
        if (NULL==fgets(ln,MAXCHARS,f)) break;//
        hh++;
        L=strlen(ln)-1;
        if ('\n'!=ln[L]) {//超长行忽略后面内容
            printf("%s Line %d too long(>%d),spilth ignored.\n",argv[1],hh,MAXCHARS);
            while (1) {
                c=fgetc(f);
                if ('\n'==c || EOF==c) break;//
            }
        }
        while (1) {//去掉行尾的'\n'和空格
            if ('\n'==ln[L] || ' '==ln[L]) {
                ln[L]=0;
                L--;
                if (L<0) break;//
            } else break;//
        }
        if (L>=0) {
            strcpy(buf+i,ln);i+=MAXCHARS;
            n++;
            if (n>=MAXLINES) {
                MAXLINES2=MAXLINES*2;
                if (MAXLINES2==1280000) MAXLINES2=2500000;
                buf2=(char *)realloc(buf,MAXLINES2*MAXCHARS);
                if (NULL==buf2) {
                    printf("Can not malloc(%d LINES*%d CHARS)!\n",MAXLINES2,MAXCHARS);
                    printf("WARNING: Lines >%d ignored.\n",MAXLINES);
                    break;//
                }
                buf=buf2;
                MAXLINES=MAXLINES2;
            }
        }
    }
    fclose(f);
    if (n>1) {
        if (ignore_case) qsort(buf,n,MAXCHARS,icompare);
        else qsort(buf,n,MAXCHARS,compare);
    }
    f=fopen(argv[2],"w");
    if (NULL==f) {
        free(buf);
        printf("Can not create file %s!\n",argv[2]);
        return 2;
    }
    fprintf(f,"%s\n",buf);
    if (n>1) {
        if (ignore_case) {
            hh=0;
            L=MAXCHARS;
            for (i=1;i<n;i++) {
                if (stricmp((const char *)buf+hh,(const char *)buf+L)) {
                    fprintf(f,"%s\n",buf+L);
                }
                hh=L;
                L+=MAXCHARS;
            }
        } else {
            hh=0;
            L=MAXCHARS;
            for (i=1;i<n;i++) {
                if ( strcmp((const char *)buf+hh,(const char *)buf+L)) {
                    fprintf(f,"%s\n",buf+L);
                }
                hh=L;
                L+=MAXCHARS;
            }
        }
    }
    fclose(f);
    free(buf);
    return 0;
}
vansoft 2015-04-16
  • 打赏
  • 举报
回复
一行行读出来。加入集合,使用KEY,如果KEY相同是加不进去的。 全加完后,把集合再保存到文件里。
of123 2015-04-16
  • 打赏
  • 举报
回复
是指相同内容的整行? 可以利用 ListBox 控件来实现:

Private Declare Function SendMessagebyString Lib "user32" Alias "SendMessageA" (ByVal hWND As Long, _
ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long

Private Const LB_FINDSTRINGEXACT = &H1A2    '在 ListBox 中精确查找

Private Sub Get_Unique_Line(strFile As String)
    Dim strLine As String

    List1.Clear
    Open strFile For Input As #1
    Do Until EOF(1)
        Line Input #1, strLine
        If -1 = SendMessagebyString(List1.hWnd, LB_FINDSTRINGEXACT, -1, strLine) Then List1.AddItem strLine
    Loop
    Close #1
End Sub
List1 里面就是那些唯一的行了。你可以输出保存到新文件中。当然,也可以写到原文件中。
Open strFile For Output As #1
Do While List1.ListCount
    Print #1, List1.List(0)
    List1.RemoveItem 0
Loop
Close #1
文本编辑器,支持文本编辑,比较,FTP编辑,FTP上传下载,加密,十六进制编辑,列模式,回行显示,正则表达式,多行查找和替换,代码折叠,关键字高亮显示,编辑400GB的大文件,比较100GB的大文件,对超过1G的大文件排序,删除重复,执行自定义脚本自动修改文件。 PilotEdit 中文多语特别版PilotEdit 中文多语特别版 PilotEdit 中文版- 功能 1. PilotEdit支持超过400G的文件 >编辑超过400GB(400亿行)的文件 >上传/下载超过4G的FTP文件 >加密/解密超过4G的文件 >比较超过4G的文件 2. 全面支持UNICODE文件和DOS/UNIX文件 >快速改变多个文件的编码 >在不同编码的文件中拷贝文字时自动调整文字编码 3. 自定义的文件类型和关键字高亮显示 >支持超过20种文件类型 >支持自定义文件类型 >对不同的文件类型定义不同的TAB和缩进 比如,您可以定义当用户按TAB键时,在C/C++中输入TAB键,而在Java文件中输入四个空格 4. 十六进制编辑模式 >在十六进制编辑模式中可以很方便地插入,修改,删除,拷贝,粘贴 >十六进制编辑模式查找和替换 >当从十六进制编辑模式切换回文本模式时自动检测文件类型 >在十六进制编辑模式和文本模式中无限的undo/redo 5. 列模式 >键盘输入的字符将被插入到列模式中所有选中的行 >如果粘贴一行文字,这行文字将被插入到列模式中所有选中的行 >如果粘贴多行文字,这些文字将被逐行被插入到列模式中选中的行 6. 无限的undo/redo >在十六进制编辑模式和文本模式切换后仍然可以无限次地undo/redo 7. 回行显示 >即便在编辑一个几百MB的文件时,切换到回行显示仍然非常迅速 8. 编辑FTP文件 >打开和保存FTP文件 >删除多个FTP文件和目录 >上传/下载多个FTP文件和目录 9. 基于多行的查找和替换 >查找/替换多行文本 >用正则表达式查找/替换多行文本 10. 文件比较和合并 >比较两个基本点目录 >比较合并两个文件 >在文件比较窗口中直接编辑文件 >当文件内容改变时文件比较窗口自动更新比较结果 >在文件比较窗口中查找/替换 >查找上一个/下一个不同的文本块 >将所有相同/不同的行拷贝到剪贴板。通过这个功能,我们可以很方便地找出第一个文件中存在而第二个文件中不存在的行 11. 自定义字符串表 >单击即可添加一个自定义的字符串 >在所选文本的前后分别添加自定义的字符串 12. 正则表达式 >用正则表达式查找/替换多行文本 13. 脚本文件 >可以把常用的正则表达式定义在脚本中,直接运行脚本即可替换文字 14. 256位 AES加密/解密 >用PilotEdit直接透明地编辑一个加密的文件 >加密/解密多个文件和目录 >加密/解密超过4G的文件 15. 文件组 >双击文件组可以快速打开多个文件 16. 在多个目录中查找/替换 >支持多行的查找/替换 17. 排序 >按升序/降序排序 >按文本或数字排序 >按一列数据排序 >按正则表达式排序 18. 查找/删除重复的行 >在打开的文件中查找/删除重复的行 >按文本或数字比较 >按一列数据比较 >按正则表达式比较 19. 收集字符串 >将匹配正则表达式字符串拷贝到的剪贴板。比如,我们可以把一个文件中所有的Email地址拷贝到剪贴板。 20. 将打开的文件用原目录结构另存为新文件 >同时拷贝选中的文件和目录结构 21. 编辑SFTP文件 >打开和保存SFTP文件 >删除多个SFTP文件和目录 >上传/下载多个SFTP文件和目录 PilotEdit支持以下操作系统 Windows 2000 Windows 2003 Windows XP Windows Vista Windows 7 Windows 2008 Windows 8 PilotEdit不支持Win98和 WinNT. PilotEdit支持以下和更多文件类型: C, C++ Files Java Files HTML Files XML Files Oracle SQL Files UNIX/Linux Shell Files JSP TCL/TK Files BAT files PilotEdit Script Javascript Files PHP ASP Assembly ASP.NET CSS Visual Basic Perl C# Python Ruby XHTML Files COBOL AHK Script Inno Setup Script AutoIt Script

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧