以最有效的方式拆分字符串

时间:2014-02-02 19:18:20

标签: java android regex optimization

我正在创建一个Android应用程序。我有多个字符串,其中一个是

[
  {
    "name": "lofer",
    "fbname": "\u200b \u179c",
    "link": "http:\/\/example.com:9874\/et\/oyp.pls",
    "0": null
  },
  {
    "name": "oxypo",
    "fbname": "\u200b \u179c\u17b7",
    "link": "http:\/\/example.com:9874\/et\/pou.pls",
    "0": null
  }
]

这存储在String result

现在我想从这个字符串中提取名称和相应的链接,如

Name1= lofer
Link1= http://example.com:9874/et/oyp.pls

Name2= oxypo
Link2= http://example.com:9874/et/pou.pls

首先我删除了所有的双引号,然后从头开始删除“ [”,从结尾删除“] ”,然后我将其拆分为“ } “然后我删除” {“,然后按”“拆分,然后找到名称和链接。

我已经编写了一个代码并且它的工作非常好,我得到了我想要的但我想优化它。这是我的代码和我正在做的事情

result=result.replace("\"","");
    result=result.substring(1,result.length()-1);
    String [] split=result.split("\\}");       
        for(int i=0;i<split.length;i++)
        {
            split[i]=split[i].substring(1);
            String [] spl=split[i].split(",");
            Data d = new Data();
            for(int j=0;j<spl.length;j++)
            {                                   
                if(spl[j].substring(0,4).equals("name"))
                {
                    d.name=spl[j].substring(5);
                }
                else if(spl[j].substring(0,4).equals("link"))
                {
                    d.link=spl[j].substring(5);
                    d.link=d.link.replace("\\", "");
                }               
            }
             output.add(d);
            Log.i("name",d.name);
            Log.i("link",d.link);
        }

我不擅长正则表达式,也许我们可以通过正则表达式实现所有这些,或者除了 OPTIMIZATION 之外的任何事情都是我的主要关注,而不是多次替换。非常感谢您的帮助。

由于

2 个答案:

答案 0 :(得分:4)

那是JSON

Android附带基本JSON parsing classes,还有其他可用的库(例如Gson,Jackson)提供更多功能集。

使用Android提供的类的最基本的解决方案是:

// Your JSON represents an array of objects
JSONArray jsonArray= new JSONArray(yourString);

// Now you have the array, iterate and get the objects
for (int i = 0; i < jsonArray.length(); i++)
{
    JSONObject obj = jsonArray.getJSONObject(i);

    System.out.println("Name" + i + "= " + obj.getString("name"));
    System.out.println("Link" + i + "= " + obj.getString("link"));
} 

答案 1 :(得分:0)

看起来像JSON有效的方法是使用JSON parser

之类的GSON