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