大家好,我是android dev的新手..你能帮我解决这个问题吗?我正在尝试获取字符串中的文件名。我知道我需要对它进行子串化,但我没有得到正确的输出。例如,我的字符串值为:
{"Filename":"23476-love-823873.jpg","ChunkId":1,"ChunkLength":201929,"FileLength":12122}
我只想获得“23476-love-823873.jpg”的文件名,我该怎么做?感谢您的帮助。
你在那里有结构化数据,所以你不应该盲目地使用子字符串。相反,您可以将字符串解析为 JSON,然后访问新对象的相应属性。您可以从 org.json 导入一个 Android JSON 库。具体来说,您需要在此处使用解析器:http: //developer.android.com/reference/org/json/JSONTokener.html
鉴于:
yourstring= {"Filename":"23476-love-823873.jpg","ChunkId":1,"ChunkLength":201929,"FileLength":12122}
试试这个代码:
int startindex,endindex;
startindex=indexOf(':');
endindex=indexOf(',');
String filename= yourstring.substring(startindex,endindex);
它看起来像一个结构化对象(HashMap、NameValuePair、JSON 等)。
无论如何,如果它是 String,
String mString = "{\"Filename\":\"23476-love-823873.jpg\",\"ChunkId\":1,\"ChunkLength\":201929,\"FileLength\":12122}";
if(mString.contains("Filename")){
int start=mString.indexOf("Filename")+11;// If file name is not at beginning, have to do like this.
int end=mString.indexOf(",", start)-1;//-1 for excluding a double code
String filename=mString.substring(start, end);
}
它看起来像一个 JSON 字符串,有很多方法可以解析它。
请参阅关于 SO 的相同问题:Sending and Parsing JSON Objects
标准方法将使用 JSON 库将 String 反序列化为 Java 对象或 Map,然后获取属性值。如果太重,可以使用正则表达式。
那么如果该字符串是 json 响应并且您确定您将始终获得该字符串格式,那么它适用于使用@Abhishek 给出的方法。请参阅下面的示例,与他给出的相同。(很少修改)。
String sample = "{"Filename":"23476-love-823873.jpg","ChunkId":1,"ChunkLength":201929,"FileLength":12122}";
Log.d("string", sample);
int startindex,endindex;
startindex = sample.indexOf(':');
endindex = sample.indexOf(',');
String filename= sample.substring(startindex + 1,endindex);
Log.d("result", filename);
你的日志会是这样的:
string {"Filename":"23476-love-823873.jpg","ChunkId":1,"ChunkLength":201929,"FileLength":12122}
result "23476-love-823873.jpg"