以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  地址解析,不可保存至表格中  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=169386)

--  作者:瑞峰
--  发布时间:2021/6/14 21:03:00
--  地址解析,不可保存至表格中
有两个问题,请帮忙指点一下。
1. 解析地址之后,只能显示在文本框,点击保存,不能保存到 订单表中。
   如果使用writevalue, 就会出现,每点击一次 地址解析 这个 键,才保存一个单元格。一个地址,要点击多次,才可以保存完成。

2. 县区一级的地址解析,不成功。如果是江苏省无锡市新吴区,可以成功解析,但如果第三级是 江苏省无锡市江阴市,就不可以了。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:地址解析.zip


样本地址:
孟女士,86-13831******7,河北省邯郸市永年区刘营镇朱庄西头牌坊
孟女士,86-13831******7,河北省邯郸市永年区刘营镇朱庄西头牌坊
[此贴子已经被作者于2021/6/16 15:40:58编辑过]

--  作者:有点蓝
--  发布时间:2021/6/14 21:56:00
--  
1、不能保存原因参考:http://www.foxtable.com/webhelp/topics/2436.htm
2、地址解析只能做到大概,无法完全符合,毕竟中文博大精深
可以参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=158931

--  作者:瑞峰
--  发布时间:2021/6/16 15:41:00
--  
我想将 姓名,电话,地址,分成三段。
但是从不台平台有下面多种情况。
有没有办法?


李四,188*****708,江苏省无锡市新吴区大家庭   全角逗号
李四,188*****708,江苏省无锡市新吴区大家庭     半角逗号
李四 188*****708 江苏省无锡市新吴区大家庭     一个空格 隔开
李四  188*****708  江苏省无锡市新吴区大家庭     2个空格 隔开
李四 188*****708  江苏省无锡市新吴区大家庭     前面一个空格 后面2个空格隔开
李四 188*****708 江苏省 无锡市 新吴区 大家庭     全部一个空格 隔开
[此贴子已经被作者于2021/6/16 15:42:36编辑过]

--  作者:有点蓝
--  发布时间:2021/6/16 15:43:00
--  
除非规范录入的数据,否则可能还会有顿号、3个空格、4个空格、......
--  作者:瑞峰
--  发布时间:2021/6/16 16:00:00
--  
以下4种是从PDD,TB,JD复制地址的格式。
单个我都搞定了,但是如果四种兼顾,我没有找到一个判定条件,用于自动选择 哪段代码。

李四,188*****708,江苏省无锡市新吴区大家庭          全角逗号
李四,188*****708,江苏省无锡市新吴区大家庭              半角逗号

李四 188*****708 江苏省无锡市新吴区大家庭              空格 隔开
李四 188*****708 江苏省 无锡市 新吴区 大家庭               全部一个空格 隔开
[此贴子已经被作者于2021/6/16 16:01:23编辑过]

--  作者:瑞峰
--  发布时间:2021/6/16 16:03:00
--  
另外,FT 条件表达式中,怎么输入  全角逗号?
--  作者:tommargq2
--  发布时间:2021/6/16 16:12:00
--  

逐字符判断,遇到第一个数字,记录位置,将字符串该位置前所有字符取出记做“姓名”

去掉姓名部分的字符串逐字符判断,遇到第一个非数字字符记录位置,将该位置前所有字符记成“电话”

剩下的记做“地址”

对“姓名”和“地址”,去空格,去标点符号即可

 

用到的代码

DIM XM AS STRING

DIM DH AS STRING

DIM DZ AS STRING

DIM ST AS STRING

for i as integer = 0 to str.Length - 1

    IF CHAR.ISNUMBER(str.Chars(i)) THEN

        XM = LEFT(str,i)

        ST = str.substring(i)

        EXIT FOR

    END IF

next

for i as integer = 0 to ST.Length - 1

    if CHAR.ISNUMBER(ST.CHARS(I)) THEN

    ELSE

        DH = LEFT(ST,i)

        DZ = ST.SUBSTRING(I)

        EXIT FOR

    END IF

NEXT

 

 

 

[此贴子已经被作者于2021/6/16 16:30:06编辑过]

--  作者:有点蓝
--  发布时间:2021/6/16 16:14:00
--  
全角参考:http://www.foxtable.com/webhelp/topics/1273.htm
--  作者:瑞峰
--  发布时间:2021/6/16 16:24:00
--  
聪明~~,太感谢了
--  作者:瑞峰
--  发布时间:2021/6/16 16:25:00
--  

聪明~~,太感谢了
以下是引用tommargq2在2021/6/16 16:12:00的发言:

逐字符判断,遇到第一个数字,记录位置,将字符串该位置前所有字符取出记做“姓名”

去掉姓名部分的字符串逐字符判断,遇到第一个非数字字符记录位置,将该位置前所有字符记成“电话”

剩下的记做“地址”

对“姓名”和“地址”,去空格,去标点符号即可

 

用到的代码

DIM XM AS STRING

DIM DH AS STRING

DIM DZ AS STRING

DIM ST AS STRING

for i as integer = 0 to str.Length - 1

    IF CHAR.ISNUMBER(str.Chars(i)) THEN

        XM = LEFT(str,i)

        ST = str.substring(i)

        EXIT FOR

    END IF

next

for i as integer = 0 to ST.Length - 1

    if CHAR.ISNUMBER(ST.CHARS(I)) THEN

    ELSE

        DH = LEFT(ST,i)

        DZ = ST.SUBSTRING(I)

    END IF

NEXT