heroxianf 发表于 2018-1-15 14:37:24

请教一个对字符串拆分的问题[已解决]

本帖最后由 heroxianf 于 2018-1-16 11:47 编辑

请大家帮忙看看怎么能实现呢?自己想了好多都行不通。


$data1 = '33'
$data2 = '66'
$data3 = '88'
$data4 = '1233456766668910881212'


我想得到结果是:1 2 33 4 5 6 7 66 66 8 9 1 0 88 1 2 1 2
说明:我希望我设置的关键字在处理的时候能单独分出来占一个位置,没有设置的 就统一拆分成个体。


说明:楼下两位大大的方法能解决问题的。

afan 发表于 2018-1-15 14:56:44

这问题到结果……至少要说明下吧

afan 发表于 2018-1-15 15:04:18

这意思?
Local $data1 = '33'
Local $data2 = '66'
Local $data3 = '88'
Local $data4 = '1233456766668910881212'
Local $sTmp = StringReplace($data4, $data1, 'a')
$sTmp = StringReplace($sTmp, $data2, 'b')
$sTmp = StringReplace($sTmp, $data3, 'c')
$sTmp = StringRegExpReplace($sTmp, '(.)(?=.)', '${1} ')
$sTmp = StringReplace($sTmp, 'a', $data1)
$sTmp = StringReplace($sTmp, 'b', $data2)
$sTmp = StringReplace($sTmp, 'c', $data3)
MsgBox(0, '', $sTmp)

heroxianf 发表于 2018-1-15 15:10:58

回复 3# afan

A大好厉害,结果是这样的,我先测试一下我的数据。

heroxianf 发表于 2018-1-15 15:19:44

回复 3# afan

A大,如果我的数据里有很多其他字符,比如:


Local $data1 = '简历'
Local $data2 = '自学'
Local $data3 = '工资'
$data4 = '这是我的个人简历:a,我是自学;b,我没有学历;c,但是我现在工资已经有3680元;'

zghwelcome 发表于 2018-1-15 15:30:57

#include <array.au3>
Local $data1 = '简历'
Local $data2 = '自学'
Local $data3 = '工资'
$data4 = '这是我的个人简历:a,我是自学;b,我没有学历;c,但是我现在工资已经有3680元;'
$Reg = StringRegExp($data4,'('&$data1 & '|' & $data2 & '|' & $data3&'|\V)',3)
If Not @error Then _ArrayDisplay($Reg)

afan 发表于 2018-1-15 15:39:58

回复afan

A大,如果我的数据里有很多其他字符,比如:
heroxianf 发表于 2018-1-15 15:19 http://www.autoit3.cn/images/common/back.gif


    上面只是示例,实际应用可以使用一些几乎不会出现的字符替换,且需在替换前 StringInstr() 确定不包含即可。

heroxianf 发表于 2018-1-15 15:43:15

回复 7# afan

谢谢A大了,我下来折腾一下,不晓得关键词多的话会不会影响速度。

afan 发表于 2018-1-15 15:49:00

回复afan

谢谢A大了,我下来折腾一下,不晓得关键词多的话会不会影响速度。
heroxianf 发表于 2018-1-15 15:43 http://www.autoit3.cn/images/common/back.gif


    如果是这个意思替换的话,可以借鉴 zghwelcome 的方式,可以很简单
Local $data1 = '33'
Local $data2 = '66'
Local $data3 = '88'
Local $data4 = '1233456766668910881212'
$sTmp = StringRegExpReplace($data4, '(' & $data1 & '|' & $data2 & '|' & $data3 & '|\S)(?=.)', '${1} ')
MsgBox(0, '', $sTmp)

heroxianf 发表于 2018-1-15 16:09:07

回复 9# afan

他这个如果修改 $data3 = 12   就不能输出正确的。最后一个12是分开的。

zghwelcome 发表于 2018-1-15 16:18:48

回复 10# heroxianf


    把A版的这么改下
$sTmp = StringRegExpReplace($data4 & @CRLF, '(' & $data1 & '|' & $data2 & '|' & $data3 & '|\S)(?!=\v)', '${1} ')

heroxianf 发表于 2018-1-15 16:51:03

回复 11# zghwelcome


    貌似可以了,明天再测试更多数据看看。

heroxianf 发表于 2018-1-15 17:12:21

回复 11# zghwelcome

那我的关键词有几千个 是不是就卡的不行了?

zghwelcome 发表于 2018-1-15 17:57:23

回复 13# heroxianf


   我搞不清楚你的具体需求,AU3中,大量数据时,StringRegExpReplace函数的效率相当低,试试 StringRegExp

heroxianf 发表于 2018-1-15 19:27:36

回复 14# zghwelcome

示例中的$data只是几个词而已,随着数据的处理,肯定会超过3000词。
页: [1]
查看完整版本: 请教一个对字符串拆分的问题[已解决]