gpt4 book ai didi

java - 拆分后无法显示字符串值

转载 作者:行者123 更新时间:2023-12-01 18:54:16 25 4
gpt4 key购买 nike

我正在编写一个示例代码,该代码根据分隔符分割给定的字符串并显示最终的字符串集。这是我的代码-

        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 中传递字符串的一部分作为密码的一部分)

最佳答案

adg$dgsd$$$brr$dhr$$$ce$twt$$$dttgdf$gdfg$$$$$

原始数组。

adg$dgsd$$$brr$dhr$$$ce$twt$$$dttgdf$gdfg

$$$$ 作为分隔符,因此 newArray 的元素将是: adg$dgsd$$$brr$dhr$$$ce$twt$$$dttgdf$gdfg 和 $ (你的数组中有 5 $字符串)

$

在最后一个循环中,newArr[j]将为$,分割后会生成一个单元素数组,其中包含一个$。所以 arr[0] 是 $。

$

$

$

同上。显然是 OutOfBoundsException。

我认为这个问题的关键是理解String#split本身。查看文档。

以下代码将生成与您的预期结果类似的输出:

String strArr = "$adg$dgsd$$$brr$dhr$$$ce$twt$$$dttgdf$gdfg$$$$$";
//Print out the string
System.out.println(strArr);
String newArr = strArr.replaceAll("\\$\\$\\$\\$\\$", "");
System.out.println(newArr);
String[] arr = newArr.split("\\$\\$");
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}

关于java - 拆分后无法显示字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14705006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com