有没有更好的方法将这个字符串分成子字符串?
Is there a better way to divide this string into substrings?
我正在尝试从一长串信息中提取 "first_name"
和 "last_name"
,如下所示:
{
"123123123": {
"id": "12321312****",
"email": "***************",
"first_name": "Marcus",
"gender": "male",
"last_name": "Bengtsson",
"link": "https://www.facebook.com/app_scoped_user_id/123123123/",
"locale": "en_EN",
"middle_name": "Peter",
"name": "Marcus Peter Bengtsson"
}
}
我这样做的方式(这可能是非常错误的并且是一个非常糟糕的解决方案)是我首先使用以下代码将子字符串从 "first_name"
提取到 "link"
:
String subStr = str.substring(str.indexOf("first_name"), str.lastIndexOf("link"));
然后我得到:
first_name":"Marcus","gender":"male","last_name":"Bengtsson","
然后我做同样的事情,但是从 ":"
到 "gender"
得到 "first_name
:
String firstNameOfUser = subStr.substring(subStr.indexOf(":")+2, subStr.lastIndexOf("gender")-3);
然后 "last_name"
同样的事情:
String lastNameOfUser = subStr.substring(subStr.indexOf(""last_name"")+12, subStr.lastIndexOf(",")-1);
最后,我在两个字符串之间附加了一个 space:
String nameOfUser = new StringBuilder().append(firstNameOfUser).append(" ").append(lastNameOfUser).toString();
然后我得到:
Marcus Bengtsson
可能有更好的方法来做到这一点,但我不知道如何去做。
这看起来像 JSON,因此使用许多可用解析器之一解析它然后提取数据会更好 。
如@Crozin 所写,它看起来像 json,但如果您不能以这种方式解析它,您始终可以使用正则表达式。只需使用 Matcher,Pattern 和正则表达式 ^.*\"first_name\":\"([a-zA-Z]+)\".*\"last_name\":\"([a-zA-Z]+)\".*$
.
给定的String是一个JSON,使用JSONParser解析为json,然后提取需要的数据。
那是 json?访问这个 link JSON Example
nameOfUser = 123123123.first_name + " " + 123123123.last_name;
希望对您有所帮助
我正在尝试从一长串信息中提取 "first_name"
和 "last_name"
,如下所示:
{
"123123123": {
"id": "12321312****",
"email": "***************",
"first_name": "Marcus",
"gender": "male",
"last_name": "Bengtsson",
"link": "https://www.facebook.com/app_scoped_user_id/123123123/",
"locale": "en_EN",
"middle_name": "Peter",
"name": "Marcus Peter Bengtsson"
}
}
我这样做的方式(这可能是非常错误的并且是一个非常糟糕的解决方案)是我首先使用以下代码将子字符串从 "first_name"
提取到 "link"
:
String subStr = str.substring(str.indexOf("first_name"), str.lastIndexOf("link"));
然后我得到:
first_name":"Marcus","gender":"male","last_name":"Bengtsson","
然后我做同样的事情,但是从 ":"
到 "gender"
得到 "first_name
:
String firstNameOfUser = subStr.substring(subStr.indexOf(":")+2, subStr.lastIndexOf("gender")-3);
然后 "last_name"
同样的事情:
String lastNameOfUser = subStr.substring(subStr.indexOf(""last_name"")+12, subStr.lastIndexOf(",")-1);
最后,我在两个字符串之间附加了一个 space:
String nameOfUser = new StringBuilder().append(firstNameOfUser).append(" ").append(lastNameOfUser).toString();
然后我得到:
Marcus Bengtsson
可能有更好的方法来做到这一点,但我不知道如何去做。
这看起来像 JSON,因此使用许多可用解析器之一解析它然后提取数据会更好 。
如@Crozin 所写,它看起来像 json,但如果您不能以这种方式解析它,您始终可以使用正则表达式。只需使用 Matcher,Pattern 和正则表达式 ^.*\"first_name\":\"([a-zA-Z]+)\".*\"last_name\":\"([a-zA-Z]+)\".*$
.
给定的String是一个JSON,使用JSONParser解析为json,然后提取需要的数据。
那是 json?访问这个 link JSON Example
nameOfUser = 123123123.first_name + " " + 123123123.last_name;
希望对您有所帮助