搜索通配符('<','>'),计算它并获取java中的位置

时间:2010-06-28 06:46:48

标签: java android string wildcard

我想在字符串中搜索Wildcard('<','>'),计算它们并在java中获取它们的位置。我的字符串如下所示

  

Peter< 5554>,John< 5556>,

我应该使用哪个功能?谢谢。

4 个答案:

答案 0 :(得分:3)

您应该使用PatternMatcher

Pattern pattern = Pattern.compile("<[^>]*>");
Matcher matcher = pattern.matcher("Peter <5554>, John <5556>,");
while (matcher.find()) {
   System.out.println("index="+matcher.start()+" - "+matcher.group());
}

输出:

index=6 - <5554>
index=19 - <5556>

答案 1 :(得分:2)

一种解决方案是使用String.indexOf()。你可以这样做:


String s = "Peter <5554>, John <5556>";
List<Integer> posGt = new ArrayList<Integer>();
int i = 0;
while((i = s.indexOf('>', i)) != -1) {
   posGt.add(i++);
}
...
//the same for <

答案 2 :(得分:2)

您可以使用重复的indexOfsubstring

来实施它
String s = "Peter <5554>, John <5556>,"
int count = 0;
ArrayList<Integer> positions = new ArrayList<Integer>();
int cut = 0;
while(true) {
  // search for <
  int index = s.indexOf('<');
  if (index < 0)
    break;
  // search for >
  int index2 = s.indexOf('>');
  if (index2 < 0)
    break; // or throw exception

  // update count and positions
  count++;
  positions.add(index+cut);

  s = s.substring(index2+1);
  cut += index2+1; // used to compute the initial position since we're cutting the string
}

答案 3 :(得分:0)

使用indexOf重复fromIndex看起来是个不错的解决方案。替代方案是迭代字符串并使用charAt(可以说是显而易见的解决方案,如果只有java具有合理的字符串索引):

String s = "Peter <5554>, John <5556>,";
for (int i = 0; i < s.length(); i++) {
    if (s.charAt(i) == '<' || s.charAt(i) == '>') {
        System.out.printf("index %d - %s\n", i, s.charAt(i));
    }
}