有一个 JavaScript 的需求
给一个 字符串,按照规定切割为 数组。
比如:
var test = "你啊后啊撒发我发<blod>你好啊啊啊啊</blod>"
想要得到的结果为:
["你", "啊", "后", "啊", "撒", "发", "我", "发", "<blod>", "你", "好", "啊", "啊", "啊", "啊", "</blod>"]
自己太菜,没想到好的解决方法,各位 v 站大佬,能否指导指导
1
waiaan 2019-10-14 11:08:34 +08:00 1
正则?
|
2
shintendo 2019-10-14 11:10:28 +08:00 2
最好准确描述一下你所说的“规则”,从你的例子里看不出来
|
3
Vegetable 2019-10-14 11:11:01 +08:00 1
你要先描述一下,你的规则是什么,不要用例子来表达。
这样可能会让你自己得到答案,也让想帮忙的人搞清楚点状况 |
4
None123 2019-10-14 11:11:22 +08:00 1
正则
|
5
mufeng 2019-10-14 11:11:49 +08:00 1
'你啊后啊撒发我发<blod>你好啊啊啊啊</blod>'.split(/(<[^>]+>|'')/)
=> ["你啊后啊撒发我发", "<blod>", "你好啊啊啊啊", "</blod>", ""] |
7
ipwx 2019-10-14 11:19:59 +08:00 via Android 1
那 <abc<def>ghi> 怎么算? 一整个?
|
9
lijsh 2019-10-14 11:22:55 +08:00 1
先写个 parser
|
10
seki 2019-10-14 11:22:57 +08:00 1
用 5 楼的方法,先把 <> 给分出来,再跑一遍把剩下的分开
|
11
feiniu OP 谢谢大家🙏,我先用 5 楼的方法试试
|
12
ipwx 2019-10-14 11:31:57 +08:00 1
|
13
jackchao7432 2019-10-14 11:39:27 +08:00
在飞牛?
|
14
gbin 2019-10-14 11:48:47 +08:00 2
不会正则也没事,遍历一次,遇到 `<` 存起来,知道遇到 `>` 视为一个 token 就好。
https://ideone.com/Oc2N57 |
16
rabbbit 2019-10-14 12:32:00 +08:00
|
17
feiniu OP 谢谢各位大佬 🙏🙏
|
18
Zoro76 2019-10-16 16:27:14 +08:00
如果只是你这种结构的字符串的话,可以试试这个 test.split(/(?=[\u4e00-\u9fa5<])/)
|
19
meepo3927 2019-10-17 09:37:04 +08:00
#14 楼的方法可以, 简单有效
|