| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3390 人关注过本帖
标题:求个VB思路
取消只看楼主 加入收藏
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1933
专家分:3012
注 册:2009-12-22
结帖率:89.13%
收藏
 问题点数:0 回复次数:3 
求个VB思路
需要在文本中所有的汉字后加上一个空格,如何解决。文本有二万多行。
给个编程思路就行。
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 编程 思路 多行 文本 VB 
2021-07-26 15:32
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1933
专家分:3012
注 册:2009-12-22
收藏
得分:0 
已搞定,搞定之后才发现你上面发的内容。

思路:
1.全部转换为ASCII,用逗号分开
2.ASCII打散成数组,ASCII依次还原为字符,加条件加空格

VBS代码如下:
程序代码:
Dim i, str, ascstr,l
Const ForReading = 1, ForWriting = 2,ForAppend=8
Dim fso, f,openFile
Set fso = CreateObject("Scripting.FileSystemObject")

Set Stm =CreateObject("ADODB.Stream")
Stm.Type=2 '2-文本模式,1-二进制模式
Stm.Mode=3 '3-读写,1-读,2-写
Stm.CharSet= "gb2312" 'Unicode,utf-8,ASCII,gb2312,big5,gbk
Stm.Open
Stm.LoadFromFile "1.txt"
str = Stm.ReadText
Stm.Close
Set Stm=Nothing

For i = 1 To Len(str)
ascstr = ascstr & "," & CStr(Asc(Mid(str, i, 1)))
j = right(ascstr,len(ascstr)-1)
Next
'MsgBox j
Set f = fso.OpenTextFile("ASCII代码.txt",ForAppend, True)
f.Write j
f.Close


Set openFile=fso.OpenTextFile("ASCII代码.txt",1,True)    '1表示只读,2表示可写,8表示追加,True表示目标文件存在时是否覆盖
AsciiStr = openFile.ReadAll
openFile.Close

S=split(AsciiStr,",")  '以空格作为分隔符
For i=0 to ubound(S)
if i+1 <= ubound(S) then  '防止下标越界
if S(i)<0 and S(i+1)>=0 then  '加入空格的时机,条件
SaveFiles(Chr(S(i)))
SaveFiles(" ")
else
SaveFiles(Chr(S(i)))
end if
else
SaveFiles(Chr(S(i)))
end if
Next

Function SaveFiles(content)  '文件内容
   Const ForReading = 1, ForWriting = 2,ForAppend=8
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.OpenTextFile("已处理文本.txt",ForAppend, True)
   f.Write content
End Function

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2021-07-26 19:40
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1933
专家分:3012
注 册:2009-12-22
收藏
得分:0 
回复 5楼 风吹过b
算了,就这样了。

程序代码:
Const ForReading = 1, ForWriting = 2,ForAppend=8
Set fso = CreateObject("Scripting.FileSystemObject")
Set openFile=fso.OpenTextFile("1.txt",1,True)  
str = openFile.ReadAll
'MsgBox str
openFile.Close

For i = 1 To Len(str)
ascstr = ascstr & "," & CStr(Asc(Mid(str, i, 1)))
j = right(ascstr,len(ascstr)-1)
Next
'MsgBox j
Set f = fso.OpenTextFile("ASCII代码.txt",2, True)
f.Write j
f.Close


Set openFile=fso.OpenTextFile("ASCII代码.txt",1,True)  
AsciiStr = openFile.ReadAll
openFile.Close

S=split(AsciiStr,",")  '以空格作为分隔符
For i=0 to ubound(S)
if i+1 <= ubound(S) then  '防止下标越界
if S(i)<0 and S(i+1)>=0 then  '加入空格的时机,条件
SaveFiles(Chr(S(i)))
SaveFiles(" ")
else
SaveFiles(Chr(S(i)))
end if
else
SaveFiles(Chr(S(i)))
end if
Next

Function SaveFiles(content)  '文件内容
   Const ForReading = 1, ForWriting = 2,ForAppend=8
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.OpenTextFile("已处理文本.txt",ForAppend, True)
   f.Write content
End Function

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2021-08-08 20:50
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1933
专家分:3012
注 册:2009-12-22
收藏
得分:0 
以下是引用William1949在2021-7-29 21:55:22的发言:

用正则 试试


Private Sub Command1_Click()
    Dim Source  As String, Dest      As String
    Dim RE      As New RegExp
    Dim MColl   As MatchCollection
   
    Source = "工a aaaa" & vbCrLf & "式aa aad" & vbCrLf & "黄花菜aaae"
   
    With RE
        .Global = True
'        .Pattern = "([\u4e00-\u9fa5])(\w)"     '匹配 汉字与非汉字
        .Pattern = "([\u4e00-\u9fa5])"          '匹配 每个汉字
        
        Set MColl = .Execute(Source)
        
'        Dest = .Replace(Source, "$1 $2")   '汉字与非汉字之间,加空格
        Dest = .Replace(Source, "$1 ")      '每个汉字之间,加空格
    End With
   
    Set RE = Nothing
End Sub


代码有Bug,汉字与非汉字之间,加空格 这一句

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2021-08-08 21:11
快速回复:求个VB思路
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015557 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved