バインドされた例外のうち、文字列のインデックスJavaでストリングを見つけます

Aashishセティ:

このコードでは、私は、Javaを使用してstrの文字列内のstr1は文字列の前と後の文字(1つだけ)を見つけるためにしようとしています

public static void main(String[] args) {
    String str = "abcXY123XYijk";
    String str1 = "XY";

    int[] arr = new int[str.length()];

    for(int i=0;i<str.length()-2;i++){
        if( "XY".equals(str.substring(i,2))){

            int index=str.indexOf("XY");

            System.out.println(String.valueOf(str.charAt(index-1))+String.valueOf(str.charAt(index+str1.length())));
        }
    }
}
azro:

正確なエラーがありStringIndexOutOfBoundsException: begin 3, end 2, length 13、それはあなたがインデックスから始まりという部分文字列を取得しようことを示しています、3そしてインデックスの端は2、2番目のパラメータは長さではなく、終わり、その使用i+2

また、str.indexOf("XY")あなたが常に同じ結果を得ることができますので、とても使い、最初のインデックスを返します。str.indexOf("XY", i)2番目のパラメータは、検索を開始するから、文字列のインデックスです

for (int i = 0; i < str.length() - 3; i++) {
    if ("XY".equals(str.substring(i, i + 2))) {
        int index = str.indexOf("XY", i);
        System.out.println("" + str.charAt(index-1) + str.charAt(index + str1.length()));
    }
}

// Outputs
c1
3i

今より良いです

あなたが間にいることを確認したようi,i+2あなたが持っているXYを、インデックスを使用するi前および次の文字を取得行うには、再びインデックスを見つける必要が、また交換しないで2店舗その変数の長さによって、XY

String find = "XY";
for (int i = 0; i < str.length() - 3; i++) {
    if (find.equals(str.substring(i, i + find.length()))) {
        System.out.println("" + str.charAt(i - 1) + str.charAt(i + find.length()));
    }
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=349168&siteId=1