ios不支持正则的断言的解决辛酸路程
发布于 4 年前 作者 jing52 3507 次浏览 来自 分享

__需求:__将文字转为语音并播放,文字内容有电话格式1234-12234343和时间格式9:00-18:30,类似如下字符串:“我们上班时间:9:00-18:30,电话是1234-12234343

__实现方法:__用微信的同声传译插件。

遇到问题:同声传译插件会将电话号码的1234读出一千两百三十四,听起来很奇怪有木有?=<=。

__解决方法:__所以我想着将电话号码之间加上空格,写个正则(/\d/g," $&"),数字是一个一个的读了。

__又遇到问题:__时间9:00-18:30被分割成了 9: 0 0- 1 8: 3 0,转成语音后就是九零零一八三零,也很奇怪有木有?=<=。

再次解决方法:将时间格式写个正则(/(\d+):(\d+)-(\d+):(\d+)/g,"$1点$2分到$3点$4分"),简直完美,时间格式完美读了出来^-^

又又遇到问题:处理时间的正则和电话的冲突了呀,那我电话的空格怎么加呢?

再再次解决方法:这个解决方法我研究了1天!终于写出来了,还用上了断言呢~ .replace(/(\d+):(\d+)-(\d+):(\d+)/g,"$1点$2分到$3点$4分").replace(/(?<!到)(?<!点)\d(?!点)(?!到)(?!分)/g, ’ $&’),一共花了2天时间搞得正则,终于啊,成功了!迫不及待用手机扫开发版试试,听听那动人的语音结果。

又又又遇到问题:结果……手机打开一片空白,查了下微信社区,555,在ios上不支持,简直晴天霹雳,看下图官方的回复……

再再再次解决方法:再次查社区,看到下方正义之光的回答,十分感谢这位卢霄霄同志!!

我的终极解决方案:

至此,完美解决~

回到顶部