您的位置:程序门 -> vb -> 基础类



vb 替换字符与处理问题.


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


vb 替换字符与处理问题.[已结贴,结贴人:alxp]
发表于:2007-08-28 02:34:48 楼主
192.168.58.60:135  
192.168.58.50:135  
192.168.58.40:135  
192.168.58.30:135  
192.168.58.20:135  
192.168.58.10:135  
如何将字符串中的:135去掉?也就是说如何将:包括:后面的东西去掉呢?  

我是这样实现的,  

textzl   =   " "  
dim   q   as   integer,   w   as   string,   e()   as   string  
e()   =   split(ip_jieguo,   vbcrlf)  
for   q   =   0   to   ubound(e)  
w   =   e(q)  
if   w   =   " "   then  
exit   for  
else  

r   =   left(w,   instrrev(w,   ": "))   +   vbcrlf  

r   =   replace(r,   ": ",   " ")  

textzl   =   textzl   +   r  
ip_jieguo   =   textzl  

end   if  
next   q  

但结果是点一次,确实是实现了去掉:135了,但在点一次就都变回车了...  
textzl   =   " "   我觉得不是这个原因,因为我是用两个text来实现的,我知道我的代码很垃圾,如果有高手会的请告诉下小弟了,先谢谢了..  

还有个问题,就是处理数据的,  

有一个文本文件里有着这样的内容..  


-------------------------------------------------------------------------------  
performing   time:   8/26/2007   4:5:23   -->   normal   scan:   about   to   scan   65536   ip   using   512   threads  
lastip   scanned:   218.25.20.23:135  
scan   5142   ips   complete   in   0   hours   0   minutes   33   seconds.   found   0   hosts  
-------------------------------------------------------------------------------  

-------------------------------------------------------------------------------  
performing   time:   8/27/2007   5:22:34   -->   normal   scan:   about   to   scan   65535   ports   using   512   thread  
127.0.0.1   80   open  
127.0.0.1   110   open  
127.0.0.1   135   open  
127.0.0.1   443   open  
lastip   scanned:   127.0.0.1:518  
scan   127.0.0.1   complete   in   0   hours   0   minutes   3   seconds.   found   4   open   ports  
-------------------------------------------------------------------------------  

我只想要其中的  

127.0.0.1   80   open  
127.0.0.1   110   open  
127.0.0.1   135   open  
127.0.0.1   443   open  
这个部分,然后处理成  

127.0.0.1:80  
127.0.0.1:110  
127.0.0.1:135  
127.0.0.1:443  

如上这个样子,我刚刚接触vb很多东西都得学习,请大家帮帮忙。
发表于:2007-08-28 03:51:511楼 得分:0
textzl   =   " "  
dim   q   as   integer,   w   as   string,   e()   as   string  
ip_jieguo=replace(textzl, ":135 ", " ")
发表于:2007-08-28 04:46:222楼 得分:0
replace函数

replace(textzl, ":135 ", " ")
发表于:2007-08-28 08:04:553楼 得分:1
不可以   replace(textzl, ":135 ", " "),因为端口号是不确定的,下一次可能就不是   135   了。

textzl   =   " "  
dim   q   as   integer,   e()   as   string  
e()   =   split(ip_jieguo,   vbcrlf)  
for   q   =   0   to   ubound(e)  
      if   e(q)   >   " "   then

            textzl   =   textzl   &   iif(len(textzl)   >   " ",   vbcrlf, " ")   &   _
                              left(e(q),   instrrev(e(q),   ": ")   -   1)  
      end   if  
next   q

ip_jieguo   =   textzl  

发表于:2007-08-28 08:12:554楼 得分:1
更正:
            textzl   =   textzl   &   iif(textzl   >   " ",   vbcrlf, " ")   &   _
                              left(e(q),   instrrev(e(q),   ": ")   -   1)

问题2
dim   strline   as   string

open   "c:\你的文件.txt "   for   input   as   #1
do   until   eof(1)
        line   input   #1,   strline
        if   val(strline)   and   instr(strline,   ". ")   then
                text1   =   text1   &   iif(text   >   " ",   vbcrlf,   " ")   &   strline
        end   if
loop
close   #1
发表于:2007-08-29 00:17:115楼 得分:0
关于第一个问题我已经自己解决了,我现在想知道,如何处理
-------------------------------------------------------------------------------  
performing   time:   8/27/2007   5:22:34   -->   normal   scan:   about   to   scan   65535   ports   using   512   thread  
127.0.0.1                 80       open  
127.0.0.1                 110       open  
127.0.0.1                 135       open  
127.0.0.1                 443       open  
lastip   scanned:   127.0.0.1:518  
scan   127.0.0.1   complete   in   0   hours   0   minutes   3   seconds.   found   4   open   ports  
-------------------------------------------------------------------------------  
这些东西??
处理成
127.0.0.1:80
127.0.0.1:110
127.0.0.1:135
127.0.0.1:443
如何实现??
发表于:2007-08-29 00:49:536楼 得分:0
:)
发表于:2007-08-29 10:38:197楼 得分:1
问题1   :   去掉   :   号   和后面的   数据:
思路   使用instr   提取出   :号的位置     再以left   提取整个字符串:号前的字符就可以了!

问题   :提取ip   地址   :

分析:   你要提取的那段字符   需要提取的部分与要去掉部分的区别在于   开头字符
取消部分开头为英文       保留部分开头为数字  
解决办法:判断每一行字符的第一个字符   若为数字保留这段不是数字的就取消;

得到保留行后   判断   该行第一个空格的位置     使用   left   提取出就可以得到你想要的了

=============================
判断英文或数字可以根据   asc码来判断  


发表于:2007-08-29 11:16:278楼 得分:0
使用instr和left函数处理
发表于:2007-08-29 11:24:159楼 得分:10
1.
  dim   s   as   string
        dim   stmp()   as   string
        dim   i   as   integer
       
        s   =   "192.168.58.60:135   "   &   vbcrlf   &   _
                "192.168.58.50:135 "   &   vbcrlf   &   _
                "192.168.58.40:135 "   &   vbcrlf   &   _
                "192.168.58.30:135 "   &   vbcrlf   &   _
                "192.168.58.20:135 "   &   vbcrlf   &   _
                "192.168.58.10:135 "
               
        stmp   =   split(s,   vbcrlf)
        s   =   " "
        for   i   =   0   to   ubound(stmp)
                s   =   s   &   split(stmp(i),   ": ")(0)   &   vbcrlf
        next
        msgbox   s


2.
  dim   strline   as   string
        dim   str   as   string
        dim   stmp()   as   string
        dim   i   as   integer

        open   "d:\test.txt "   for   input   as   #1
        while   not   eof(1)
                line   input   #1,   strline
                if   val(strline)   <>   0   then
                        stmp   =   split(strline,   chr(32))
                        strline   =   stmp(0)
                        for   i   =   1   to   ubound(stmp)
                                if   val(stmp(i))   <>   0   then
                                        strline   =   strline   &   ": "   &   stmp(i)
                                end   if
                        next
                        str   =   str   &   strline   &   vbcrlf
                end   if
        wend
        close   #1
        msgbox   str

2勉强可用,感觉不是太爽,呵呵...............
发表于:2007-08-29 16:44:4610楼 得分:0
textzl   =   "192.168.58.60:135   "
ip=left(textzl,instr(1,textzl, ": ")-1)
发表于:2007-08-29 17:23:4211楼 得分:7
问题一:
temp   =   "192.168.58.60:135 "
temp   =   mid$(temp1,   1,   instr(temp1,   ": ")   -   1)
多行可以采用循环

问题二:
temp   =   "127.0.0.1                 80       open "
if   instr(temp, "open ")   > 1   then   '判断条件包含open
    i   =   instr(temp,   "   ")       '取得第一个字段结束位置
    temp1   =   mid$(temp,   1,   i   -   1)   '纪录第一字段127.0.0.1
    temp   =   trim(mid$(temp,   i,   len(temp)))   '纪录剩余字段80   open
    i   =   instr(temp,   "   ")       '取得第二个字段结束位置
    temp   =   temp1+ ": "+mid$(temp,   1,   i   -   1)   '第一字段+第二字段
end   if

多行可以采用循环,不包含open的直接丢弃

以上数据源如果是文件,采用行行输入家循环即可
发表于:2007-08-29 17:28:5612楼 得分:0
问题二判断条件需要更改:

if   instr(temp,   "open ")   > =   1   and     instr(temp,   "open   ports ")=0   then   '判断条件包含open,但不是说明行
发表于:2007-08-29 20:27:3713楼 得分:0
我再来冒一下:)
发表于:2007-08-29 22:16:4214楼 得分:0
太感谢大家的帮助了,问题2   :vbman2003   写的比较简单呀,我在百度知道发的,有人回复老复杂了,呵呵,希望能知道大家的qq号,我真的是想交你们这个朋友,希望可以....


快速检索

最新资讯
热门点击