为了账号安全,请及时绑定邮箱和手机立即绑定

如何将js字符串分割指定的标签组成数组

如何将js字符串分割指定的标签组成数组

守着星空守着你 2019-03-19 13:19:23
比如: var str = "我是/@小王@\\和/@小李@\\的好朋友"转成var arr = [ "我是", "/@小王@\\", "和", "/@小李@\\", "的好朋友" ]我尝试str.split(/\/@|@\\/)得到["我是", "小王", "和", "小李", "的好朋友"]需要保留标签和顺序用以区分,split正则标签会被去掉很困扰。能够做到这样就更好了var arr = [{"text": "我是"}, {"name": 小王"}, {"text": "和"}, {"name": "小李"}, {"text": "的好朋友"}]
查看完整描述

2 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

其实这个问题,很简单,分析一下就知道了。分析如下:


var str = "我是/@小王@\\和/@小李@\\的好朋友"

你要转成


var arr = [{"text": "我是"}, {"name": 小王"}, {"text": "和"}, {"name": "小李"}, {"text": "的好朋友"}]

以我看来就是,通过/@和@\把字符串分割,并且以/@结尾的放到text属性中,以@\结尾的放到name中,并且保持原有顺序。

既然是有两个分割字符,那么我们就分割两次。我简单写了一下,但是没有做太多检验和判断。回头你对参数做下校验。


我的代码如下:


var str = "我是/@小王@\\和/@小李@\\的好朋友";

    var strs = str.split("/@");

    var arr = new Array();

    for (var i = 0 ;i < strs.length;i++)

    {

        if(strs[i].indexOf('@\\') != -1)

        {

            var temps = strs[i].split('@\\');

            for(var j=0;j<temps.length;j++)

            {

                if(j == temps.length -1)

                {

                    var text =

                    {

                        text:temps[j]

                    }

                }else

                {

                    var name =

                    {

                        name:temps[j]

                    }

                }

            }

        }else

        {

            var text =

            {

                text:strs[i]

            }

        }

        if(name != null && '' != name && 'undifined' != name)

        {

            arr.push(name);

        }

        if(text != null && '' != text && 'undifined' != text)

        {

            arr.push(text);

        }

    }

    console.log(arr);

那么,最后控制台输入如下:

https://img1.sycdn.imooc.com//5ca6fe010001ba1006230186.jpg

如果没问题,请采纳,谢谢。

查看完整回答
反对 回复 2019-04-05
  • 2 回答
  • 0 关注
  • 947 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信