我正在编写一个示例代码,它根据分隔符拆分给定的字符串并显示最终的字符串集。这是我的代码-
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 中将部分字符串作为密码传递的一部分)