当前位置:  开发笔记 > 编程语言 > 正文

在java arraylist中搜索regexp

如何解决《在javaarraylist中搜索regexp》经验,为你挑选了2个好方法。

赫姆斯掌握了基础知识.如果你想要字符串而不是索引,那么你可以通过使用Java 5 foreach循环来改进:

import java.util.regex.Pattern;
import java.util.ListIterator;
import java.util.ArrayList;

/**
 * Finds the index of all entries in the list that matches the regex
 * @param list The list of strings to check
 * @param regex The regular expression to use
 * @return list containing the indexes of all matching entries
 */
List getMatchingStrings(List list, String regex) {

  ArrayList matches = new ArrayList();

  Pattern p = Pattern.compile(regex);

  for (String s:list) {
    if (p.matcher(s).matches()) {
      matches.add(s);
    }
  }

  return matches
}


Herms.. 8

有内置方法吗?从来没听说过.但是,它应该很容易自己做.这里有一些完全未经测试的代码,可以为您提供基本的想法:

import java.util.regex.Pattern;
import java.util.ListIterator;
import java.util.ArrayList;

/**
 * Finds the index of all entries in the list that matches the regex
 * @param list The list of strings to check
 * @param regex The regular expression to use
 * @return list containing the indexes of all matching entries
 */
List getMatchingIndexes(List list, String regex) {
  ListIterator li = list.listIterator();

  List indexes = new ArrayList();

  while(li.hasNext()) {
    int i = li.nextIndex();
    String next = li.next();
    if(Pattern.matches(regex, next)) {
      indexes.add(i);
    }
  }

  return indexes;
}

我可能会使用Pattern和ListIterator部分有点不对(我从未使用过),但这应该给出基本的想法.您还可以在迭代器上执行简单的for循环而不是while循环.



1> DJClayworth..:

赫姆斯掌握了基础知识.如果你想要字符串而不是索引,那么你可以通过使用Java 5 foreach循环来改进:

import java.util.regex.Pattern;
import java.util.ListIterator;
import java.util.ArrayList;

/**
 * Finds the index of all entries in the list that matches the regex
 * @param list The list of strings to check
 * @param regex The regular expression to use
 * @return list containing the indexes of all matching entries
 */
List getMatchingStrings(List list, String regex) {

  ArrayList matches = new ArrayList();

  Pattern p = Pattern.compile(regex);

  for (String s:list) {
    if (p.matcher(s).matches()) {
      matches.add(s);
    }
  }

  return matches
}



2> Herms..:

有内置方法吗?从来没听说过.但是,它应该很容易自己做.这里有一些完全未经测试的代码,可以为您提供基本的想法:

import java.util.regex.Pattern;
import java.util.ListIterator;
import java.util.ArrayList;

/**
 * Finds the index of all entries in the list that matches the regex
 * @param list The list of strings to check
 * @param regex The regular expression to use
 * @return list containing the indexes of all matching entries
 */
List getMatchingIndexes(List list, String regex) {
  ListIterator li = list.listIterator();

  List indexes = new ArrayList();

  while(li.hasNext()) {
    int i = li.nextIndex();
    String next = li.next();
    if(Pattern.matches(regex, next)) {
      indexes.add(i);
    }
  }

  return indexes;
}

我可能会使用Pattern和ListIterator部分有点不对(我从未使用过),但这应该给出基本的想法.您还可以在迭代器上执行简单的for循环而不是while循环.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有