|
|
因昨天群里有位朋友问到这个问题,在帮他解决后感觉大家平常应该会经常遇到这样的问题,所以将我的两段代码给出,大家也可以跟帖给出自己的方法:
1、批处理方法,个人认为还是逐字符保险一些,只是遇到大文本效率会有问题(另外大家想一想为什么代码中的变量延迟要如此处理):
- @echo off
- cd.>b.txt
- for /f "delims=" %%a in (a.txt) do (
- set "str=%%a"
- setlocal enabledelayedexpansion
- call :lp
- endlocal
- )
- echo ok
- pause>nul&goto :eof
- :lp
- if /i "!str:~,1!" leq "z" set "var=!var!!str:~,1!"
- set "str=!str:~1!"
- if defined str goto lp
- >>b.txt echo.!var!&set "var="
复制代码 2、vbs方法,顺便说一下查了一下unicode编码表居然\u4e00就是“一”
- Dim FSO, vbStr
- Set FSO = CreateObject("Scripting.FileSystemObject")
- vbStr = FSO.OpenTextFile("a.txt").ReadAll()
- FSO.OpenTextFile("b.txt", 2, True).Write RegEx(vbStr)
- MsgBox "ok"
- Set FSO = Nothing
- Function RegEx(Str)
- Set RegEx = New RegExp
- RegEx.IgnoreCase = True
- RegEx.Global = True
- RegEx.Pattern = "[\u4e00-\u9fa5]*([^\u4e00-\u9fa5]*)[\u4e00-\u9fa5]*"
- RegEx = RegEx.Replace(str, "$1")
- End Function
复制代码 |
|