【问题标题】:Filter List : Begin by... Android Studio [closed]过滤器列表:从...开始 Android Studio [关闭]
【发布时间】:2015-06-19 21:01:20
【问题描述】:

我想过滤我的列表以便仅获取 href 的 URL。 在我的列表中,我们可以有多个对象,所以我想创建另一个列表,只有 href 的 URL。

这是我的列表返回的示例:

[<a rel="prettyPhoto[gallery-113]" href='http://www.bundoransurfco.com/wp-content/uploads/2014/11/11149460_10152656389992000_7842452340110509403_n.jpg'>]

我想获取:http://www.bundoransurfco.com/wp-content/uploads/2014/11/11149460_10152656389992000_7842452340110509403_n.jpg

所以也许创建类似谓词或正则表达式的东西:以 "href" 开头,并创建一个循环以在找到匹配项时添加新列表?

干杯!...

我的新代码:

Pattern pattern = Pattern.compile("<a rel=\"prettyPhoto\\[gallery-113\\]\"[^>]*>");
Matcher matcher = pattern.matcher(contentString);
List<String> urlWithRel=new ArrayList<String>();
String lastString;
while(matcher.find()) {
    urlWithRel.add(matcher.group());
    lastString = urlWithRel.toString();
    Pattern lastPattern = Pattern.compile("(?<=href=).*(?=>)");
    Matcher lastMatcher = lastPattern.matcher(lastString);
    List<String> imagesUrl=new ArrayList<String>();
    while(lastMatcher.find()) {
        imagesUrl.add(lastMatcher.group());
    }
    Log.i(TAG, "dernier : "+ imagesUrl);
}

【问题讨论】:

    标签: java android regex list filter


    【解决方案1】:

    您可以使用正则表达式进行分组:

    'href=(.*)>'
    

    Demo

    或者使用积极的环顾:

    '(?<=href=).*(?=>)'
    

    Demo

    【讨论】:

    • 请看看我的编辑,我认为你的正则表达式是完美的,但我怎样才能在 List 上创建一个正则表达式?我的应用程序崩溃:java.util.ArrayList 无法转换为 java.lang.CharSequence
    • @xcode_Dev 你不能只在你的数组的第一个索引上应用正则表达式,例如如果你的数组是CharSequence,你需要在CharSequence[0]上应用它(如果它只有一个元素),也很抱歉我不熟悉java!
    • 感谢您的回复!我编辑了我的代码,但我不知道我的数组中有多少对象:它来自 JSON。但也许我必须将 List 的值存储在 String 中,并将正则表达式应用于我的字符串?
    • @xcode_Dev 如果您想将其存储为字符串,则正则表达式仍然可以工作!但是如果你想存储为一个列表,你可以遍历你的列表并检查每次迭代中每个元素的正则表达式!
    • 好吧,(?) 有效!!!
    【解决方案2】:

    这个正则表达式是一个选项:

    ".*href='(.*)'.*"
    

    检查示例here。你可以使用

    String str = "[<a rel=\"prettyPhoto[gallery-113]\" href='...";
    str = str.replaceFirst(".*href='(.*)'.*", "$1");
    

    【讨论】:

      【解决方案3】:
      (?<=href=')[^']+(?=')
      

      为此使用lookarounds

      【讨论】:

        猜你喜欢
        • 2016-07-27
        • 2013-01-25
        • 1970-01-01
        • 1970-01-01
        • 2019-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多