给定一个字符串数组,如何找出特定字符串的索引?

时间:2015-09-29 21:28:01

标签: java

我有,

String[] directions = {"North", "South", "West", "East"};

不,我有一个String,它是这4个字符串文字中的任何一个。

如何获取方向的索引?

4 个答案:

答案 0 :(得分:1)

可能的枚举

public enum Direction {
    NORTH("North"), SOUTH("South"), EAST("East"), WEST("West");

    private String text;
    private Direction(String text) {
        this.text = text;
    }

    public String getText() {
        return text;
    }
}

public class TestDirection {
    public static void main(String[] args) {
        System.out.printf("%10s: %-4s%n", "Direction", "Ordinal");
        for (Direction dir : Direction.values()) {
            System.out.printf("%10s: %-4d%n", dir.getText(), dir.ordinal());
        }
    }
}

打印出来:

 Direction: Ordinal
     North: 0   
     South: 1   
      East: 2   
      West: 3  

但同样,魔鬼在细节中。由于此方法的枚举API指出:

  

返回此枚举常量的序数(它在枚举声明中的位置,其中初始常量的序数为零)。大多数程序员都没有使用这种方法。它设计用于复杂的基于枚举的数据结构,例如EnumSet和EnumMap。

答案 1 :(得分:1)

您也可以使用for循环实现此目的。

int i, index;
for i = 0; i < directions.lenght()-1; i++{
    if(s.equals(directions[i]){
        index = i;
        break;
    }
}

答案 2 :(得分:1)

试试这个简单的代码段:

String[] directions = {"North", "South", "West", "East"};

int directionIndex = Arrays.asList(directions).indexOf("West");

这将为您提供数组中任何字符串的索引,如果不存在,则返回-1

答案 3 :(得分:0)

您可以使用

java.util.Arrays.asList(directions).indexOf(s)

可以找到一个更为一般性的问题,其中有几个很好的答案here。上述解决方案是其中列出的答案之一。