区切り文字に基づいて特定の文字列を分割し、文字列の最終セットを表示するサンプルコードを作成していました。これが私のコードです-
String[] arr = null;
String[] newArr = null;
String strArr = "adg$dgsd$$$brr$dhr$$$ce$twt$$$dttgdf$gdfg$$$$$";
for (int i = 0; i < strArr.length(); i++) {
newArr = strArr.split("\\$\\$\\$\\$");
for (int j = 0; j < newArr.length; j++) {
arr = newArr[j].split("\\$\\$");
}
}
System.out.println(strArr);
System.out.println(newArr[0]);
System.out.println(arr[0]);
System.out.println(arr[1]); // throwing exception here
System.out.println(arr[2]);
System.out.println(arr[3]);
そしてこれは私が得た出力です-
adg$dgsd$$$brr$dhr$$$ce$twt$$$dttgdf$gdfg$$$$$
adg$dgsd$$$brr$dhr$$$ce$twt$$$dttgdf$gdfg
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at ArraySplit.main(ArraySplit.java:20)
これは私が期待していた出力です-
$adg$dgsd$$$brr$dhr$$$ce$twt$$$dttgdf$gdfg$$$$$
$adg$dgsd$$brr$dhr$$ce$twt$$dttgdf$gdfg
$adg$dgsd
$brr$dhr
$ce$twt
$dttgdf$gdfg$
私が観察したのは、2つの$記号がある場合、それは区切り文字パターンと同じであるため、正常に機能するということでした。ただし、間に3つの$記号があるため、残りのStringオブジェクトを表示できません。これに取り組む方法について何かアイデアはありますか?(追加情報:PostGreSQLで文字列の一部をパスワードとして渡す一部として実際にこれを使用しています)