一串文本里面提取固定的数字的问题

刚看到了这么一个问题
2023-07-28金属制品23312000000047220439#362.45
这个字符串里面提取出 23312000000047220439 这一段编码,试着写了一下。
—————————————————————————————————————————————————————————
第一步:把中文和数字格式化
=CONCAT((UNICODE(MID(A1,SEQUENCE(LEN(A1)),1))>19968)*1)
结果为:00000000001111000000000000000000000000000
第二步:获取中文的长度
=LEN(SUBSTITUTE(B1,0,""))
结果为:4
第三步:找到中文的结尾字符串长度
=FIND(1,B1)+B2
结果为:15
第四步:找到#的位置
=FIND("#",A1)
结果为:35
第五步:获取需要的字段
=MID(A1,B3,B4-B3)
结果为:23312000000047220439
—————————————————————————————————————————————————————————
把所有公式汇总后,就是这一大串:
=MID(A1,FIND(1,CONCAT((UNICODE(MID(A1,SEQUENCE(LEN(A1)),1))>19968)*1))+LEN(SUBSTITUTE(CONCAT((UNICODE(MID(A1,SEQUENCE(LEN(A1)),1))>19968)*1),0,"")),FIND("#",A1)-(FIND(1,CONCAT((UNICODE(MID(A1,SEQUENCE(LEN(A1)),1))>19968)*1))+LEN(SUBSTITUTE(CONCAT((UNICODE(MID(A1,SEQUENCE(LEN(A1)),1))>19968)*1),0,""))))
—————————————————————————————————————————————————————————
写完发现可以用是可以用,但是有bug,就是如果中文里面出现了一这样的字符,第一小步会被判断为0为不是1
比如:2023-07-28这是一串中文23312000000047220439#362.45
里面的中文会被判断为:110111
这样的话结果就是:文23312000000047220439
—————————————————————————————————————————————————————————
在EXCEL中用lambad函数应该能搞定,期待一个WPS函数解决这个问题的新思路和新公式。
感觉有一个简单的方法,头秃了暂时想不出来 orz..

KVP函数专家、创作者俱乐部成员
创作者俱乐部成员
WPS函数专家