原文本内容为:
提交日期 国家 城市 识别码
2011/10/7 中国 北京 4JV6GK60
需要替换的效果为:
提交日期 国家 城市 识别码
2011/10/1 中国 上海 4JV6GK60
现在的样子:
提交日期 国家 城市 识别码/10/1 中国 上海 4JV6GK60
不知道为何故?????$HDSN = "4JV6GK60"
$infostr = "2011/10/1" & @TAB & "中国" & @TAB & "上海" & @TAB & $HDSN
_FileSRER2Line("test.txt", $HDSN, $infostr,0,0,1)
;==========================================================================================
; 说明: 按指定的关键字替换或删除文本行,可选择是否使用正则表达式,是否写新文件等。
; 语法: _FileSRER2Line('文件路径'[, '搜索字符'[, '替换'[, 匹配标志[, 正则标志[, 回车符[, 写入标志]]]]]])
; 参数: 可选参数:如'搜索字符'字符为空(默认)则删除所有空行。
; 可选参数:如'替换'字符为空(默认)则删除匹配行,且不会留下空行。
; 可选参数:匹配标志 = 1 :整行需完全匹配(默认);匹配标志 = 0 :行中只需包含关键字。
; 可选参数:使用正则标志 = 1 使用正则(默认),为 0 不使用正则,使用原始字符串匹配。
; 可选参数:回车符标志 = 1 仅识别有回车符的断行@CRLF(默认,速度快),为 0 只要有换行符@LF即识别为断行。
; 可选参数:写入标志 = '' 写入原文件(默认);不为空则写入指定文件;= 0 仅返回不写入。
; 注意: 本函数以行作为操作单位,即不管在一行中含有几处关键字均按一个替换单位操作。
; 返回值:返回替换后的字符串。替换次数保存在@extended宏中。
; 作者: Afan -- http://www.autoitx.com
;=====================================================================================start
Func _FileSRER2Line($File, $pattern = '', $replace = '', $flag = 1, $SRE = 1, $CR = 1, $Write = '')
Local $sFile = String(FileRead($File)), $strqhz = '', $extended = 0, $sRER, $strZY, $CRF = ''
If $CR = 0 Then $CRF = '?'
If $pattern = '' Then
$sRER = StringRegExpReplace(@CRLF & $sFile, '\r' & $CRF & '\n(?=\r' & $CRF & '\n)|\r' & $CRF & '\n$', '')
Else
If $SRE = 0 Then
$strZY = '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)'
$pattern = StringRegExpReplace($pattern, $strZY, '\\$1')
$replace = StringRegExpReplace($replace, $strZY, '\\$1')
EndIf
If $flag = 0 Then $strqhz = '[^\r\n]*'
Local $patternWZ = $strqhz & $pattern & $strqhz
$pattern = '(\r' & $CRF & '\n)' & $patternWZ & '(?=\r' & $CRF & '\n)|\r' & $CRF & '\n' & $patternWZ & '$'
If $replace <> '' Then
$sRER = StringRegExpReplace(@CRLF & $sFile, $pattern, '\1' & $replace)
Else
$sRER = StringRegExpReplace(@CRLF & $sFile, $pattern, '')
EndIf
EndIf
$extended = $extended + @extended
$sRER = StringRegExpReplace($sRER, '^\r' & $CRF & '\n', '')
If $Write = '' And $Write <> '0' Then
$sTmp = FileOpen($File, 2)
FileWrite($sTmp, $sRER)
FileClose($sTmp)
ElseIf $Write <> '' Then
$sTmp = FileOpen($Write, 2)
FileWrite($sTmp, $sRER)
FileClose($sTmp)
EndIf
SetExtended($extended)
Return $sRER
EndFunc ;==>_FileSRER2Line
|