仙乃日 发表于 2015-12-5 18:35:36

[已解决]正则替换_将CSV文件中达到12位的数字替换成"\t数字"

本帖最后由 仙乃日 于 2015-12-7 08:33 编辑

例如有一CSV文件内容为:11, ,35058300300100640,叶A意,女,350587196210060040,19621006,美林居委会如何将其的35058300300100640 替换成"\t35058300300100640",350587196210060040替换成"\t350587196210060040",注: \t 是 tab键

当用 excle 打开 csv文件时,如果数字达到12位,会显示成科学记数法。将长数字串加上引号和制表符,Excel就会将其识别为文本格式。

Alam 发表于 2015-12-5 19:16:36

正则替换:Local $str = '11, ,35058300300100640,叶A意,女,350587196210060040,19621006,美林居委会'
MsgBox(0, '', StringRegExpReplace($str, '(\d{12})', '\\t\1'))

afan 发表于 2015-12-5 19:33:22

Local $sSource = '11, ,35058300300100640,叶A意,女,350587196210060040,19621006,美林居委会'
;~MsgBox(0, '源字符串', $sSource)
Local $sSRERe = StringRegExpReplace($sSource, '\d{12,}', '"' & @TAB & '\0"')
MsgBox(0, '替换结果', $sSRERe)

仙乃日 发表于 2015-12-6 12:42:49


afan 发表于 2015-12-5 19:33 http://www.autoitx.com/images/common/back.gif


    能否排除带有X的身份证号,如:35058519490504542X 这样的身份证号就不用再去加引号和制表符呢?

afan 发表于 2015-12-6 14:04:27

回复 4# 仙乃日 Local $sSource = '11, ,35058300300100640,叶A意,女,35058519490504542X,19621006,美林居委会'
;~MsgBox(0, '源字符串', $sSource)
Local $sSRERe = StringRegExpReplace($sSource, '\d{12,}(?=,)', '"' & @TAB & '\0"')
MsgBox(0, '替换结果', $sSRERe)
页: [1]
查看完整版本: [已解决]正则替换_将CSV文件中达到12位的数字替换成"\t数字"