How do I find out the position of a char

我与影子孤独终老i 提交于 2019-12-11 14:09:31

问题


I've got an String ("Dinosaur") and I don't exactly know how, but how do I get the position of the char "o" and is it in all possible to get two positions like if my String was ("Pool")


回答1:


As for your first question, you can use String#indexOf(int) to get the index of every 'o' in your string.

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

As for your second question, it is possible to get all positions of a given char by making a method which uses String.indexOf(int, int), tracking the previous index so that you don't repeat searched portions of the string. You could store the positions in an array or list.




回答2:


Use indexOf with a loop:

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



回答3:


Simply:

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



回答4:


This is probably going a little over board, but hey ;)

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]);

}

Gives me

Found o @ 1
Found o @ 2

The great thing is, you could also find "oo" as well




回答5:


Have you tried converting the String to a char array?

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



回答6:


Try this

 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));
 }


来源:https://stackoverflow.com/questions/12134872/how-do-i-find-out-the-position-of-a-char

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!