我如何找出char的位置

时间:2012-08-26 23:57:12

标签: java indexof

我有一个字符串(“恐龙”)并且我不知道如何,但我如何得到字符“o”的位置并且是否有可能得到两个位置,如果我的字符串是(“池”)

6 个答案:

答案 0 :(得分:3)

关于您的第一个问题,您可以使用String#indexOf(int)获取字符串中每个“o”的索引。

int oPos = yourString.indexOf('o');

至于你的第二个问题,可以通过制作一个使用String.indexOf(int, int)的方法来获取给定字符的所有位置,跟踪前一个索引,这样就不会重复搜索字符串的部分。您可以将位置存储在数组或列表中。

答案 1 :(得分:1)

使用indexOf循环:

String s = "Pool";
int idx = s.indexOf('o');
while (idx > -1) {
  System.out.println(idx);
  idx = s.indexOf('o', idx + 1);
}

答案 2 :(得分:0)

简单地:

public static int[] getPositions(String word, char letter)
{
    List<Integer> positions = new ArrayList<Integer>();
    for(int i = 0; i < word.length(); i++) if(word.charAt(i) == letter) positions.add(i);

    int[] result = new int[positions.size()];
    for(int i = 0; i < positions.size(); i++) result[i] = positions.get(i);

    return result;
}

答案 3 :(得分:0)

这可能会有点过分,但是嘿;)

String master = "Pool";
String find = "o";

Pattern pattern = Pattern.compile(find);
Matcher matcher = pattern.matcher(master);

String match = null;

List<Integer[]> lstMatches = new ArrayList<Integer[]>(5);
while (matcher.find()) {

    int startIndex = matcher.start();
    int endIndex = matcher.end();

    lstMatches.add(new Integer[] {startIndex, endIndex});

}

for (Integer[] indicies : lstMatches) {

    System.out.println("Found " + find + " @ " + indicies[0]);

}

给我

Found o @ 1
Found o @ 2

最棒的是,你也可以找到“oo”

答案 4 :(得分:0)

您是否尝试过将String转换为char数组?

int counter = 0;
String input = "Pool";
for(char ch : input.toCharArray()) {
    if(ch == 'o') {
        System.out.println(counter);
    }
    counter += 1;
}

答案 5 :(得分:0)

试试这个

 String s= "aloooha";
 char array[] = s.toCharArray();
 Stack stack = new Stack();

 for (int i = 0; i < array.length; i++) {
    if(array[i] == 'o'){
      stack.push(i);
    }
 }        
 for (int i = 0; i < stack.size(); i++) {
    System.out.println(stack.get(i));
 }