首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
宝塔
V2EX  ›  前端开发

不懂就问, js 问题

  •  
  •   feiniu · 36 天前 · 1036 次点击
    这是一个创建于 36 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有一个 JavaScript 的需求

    给一个 字符串,按照规定切割为 数组。

    比如:

    var test = "你啊后啊撒发我发<blod>你好啊啊啊啊</blod>"

    想要得到的结果为:

    ["你", "啊", "后", "啊", "撒", "发", "我", "发", "<blod>", "你", "好", "啊", "啊", "啊", "啊", "</blod>"]

    自己太菜,没想到好的解决方法,各位 v 站大佬,能否指导指导

    第 1 条附言  ·  36 天前
    "<>"这个没有嵌套,只有一层

    变化就是<>中的字符可能变化
    19 回复  |  直到 2019-10-17 09:37:04 +08:00
        1
    waiaan   36 天前   ♥ 1
    正则?
        2
    shintendo   36 天前   ♥ 2
    最好准确描述一下你所说的“规则”,从你的例子里看不出来
        3
    Vegetable   36 天前   ♥ 1
    你要先描述一下,你的规则是什么,不要用例子来表达。
    这样可能会让你自己得到答案,也让想帮忙的人搞清楚点状况
        4
    None123   36 天前   ♥ 1
    正则
        5
    mufeng   36 天前   ♥ 1
    '你啊后啊撒发我发<blod>你好啊啊啊啊</blod>'.split(/(<[^>]+>|'')/)
    => ["你啊后啊撒发我发", "<blod>", "你好啊啊啊啊", "</blod>", ""]
        6
    feiniu   36 天前
    @shintendo
    @Vegetable

    其实规则就是把 字符串中 有 "<>" 括起来的划分为一个“字”,
        7
    ipwx   36 天前 via Android   ♥ 1
    那 <abc<def>ghi> 怎么算? 一整个?
        8
    feiniu   36 天前
    @ipwx 暂时没这种多层嵌套的,只会有一层 “<>”
        9
    lijsh   36 天前   ♥ 1
    先写个 parser
        10
    seki   36 天前   ♥ 1
    用 5 楼的方法,先把 <> 给分出来,再跑一遍把剩下的分开
        11
    feiniu   36 天前
    谢谢大家🙏,我先用 5 楼的方法试试
        12
    ipwx   36 天前   ♥ 1
    过一遍就行,不用过两遍。

    https://ideone.com/dG4D2l
        13
    jackchao7432   36 天前
    在飞牛?
        14
    gbin   36 天前   ♥ 2
    不会正则也没事,遍历一次,遇到 `<` 存起来,知道遇到 `>` 视为一个 token 就好。
    https://ideone.com/Oc2N57
        15
    gbin   36 天前 via Android
    @gbin 仔细看了一下有一个 Bug,楼主自己根据需要修正一下, 如果 〈 没有闭合会导致 i 越界。
        17
    feiniu   36 天前
    谢谢各位大佬 🙏🙏
        18
    Zoro76   34 天前
    如果只是你这种结构的字符串的话,可以试试这个 test.split(/(?=[\u4e00-\u9fa5<])/)
        19
    meepo3927   33 天前
    #14 楼的方法可以, 简单有效
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   966 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 22:11 · PVG 06:11 · LAX 14:11 · JFK 17:11
    ♥ Do have faith in what you're doing.