迭代String Java并选择特定的单词

时间:2014-01-29 13:27:06

标签: java regex string

我有以下字符串:

[{"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有更好的想法?请帮忙。

3 个答案:

答案 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;
  }

这是您的问题的长期但立即解决方案。如果作品接受它,或者我们将尝试最小化和优化这个