我有以下字符串:
[{"index":1,"image":"1234a.jpg","thumbnail":"1234a_t.jpg","medium":"1234a.jpg"},
{"index":2,"image":"43215256b.png","thumbnail":"43215256b_t.jpg","medium":"43215256b.jpg"}]
我想只选择JPG名称或pngs(1234a.jpg OR 43215256b.png)并忽略其余字符串,我怎样才能在Java中执行此操作?我试过了substring
,但效果不理想,因为JPG的名称不同。
这是我的一段Java代码:
for (int i = 0; i < data.length(); i++) {
JSONObject c = data.getJSONObject(i);
map = new HashMap<String, String>();
map.put("imageID", c.getString("imageID"));
map.put("image", c.getString("image"));
MyArrList.add(map);
}
图片是上面包含字符串的数据库字段,所以我想从 c的内容中选择JPG名称或PNG名称.getString(“image”)我试过JSON但没有奏效,mabye有更好的想法?请帮忙。
答案 0 :(得分:1)
您应该使用常规JSON解析器。如果无法做到这一点,请使用正则表达式(?<=")\w+\.jpg(?=")
查找以引号括起的名称(&#34;&#34;),以jpg结尾。
使用Java模式时,您需要在字符串"(?<=\")\\w+\\.jpg(?=\")"
答案 1 :(得分:0)
以json格式解析它并检查每个键是否具有jpg的子字符串。如果是,则可以使用整个值。
答案 2 :(得分:0)
试试这个: 修改了你的代码:
for (int i = 0; i < data.length(); i++)
{
JSONObject c = data.getJSONObject(i);
map = new HashMap<String, String>();
if(isValid(c.getString("image")))
{
map.put("imageID", c.getString("imageID"));
map.put("image", c.getString("image"));
MyArrList.add(map);
}
}
这是我的补丁:
public boolean isValid(String value)
{
String jpgChk = "\\.jpg$";
String pngChk = "\\.png$";
Matcher jpgMatcher = Pattern.compile(jpgChk).matcher(value);
Matcher pngMatcher = Pattern.compile(pngChk).matcher(value);
if(jpgMatcher.find())
return value.contains(".png")?false:true;
else if (pngMatcher.find())
return value.contains(".jpg")?false:true;
else
return false;
}
这是您的问题的长期但立即解决方案。如果作品接受它,或者我们将尝试最小化和优化这个