我正在Android上工作。我有一个如下所示的字符串。
字符串str=“@test1 | test2|test3@test4|测试5 |测试6|test7@test8|测试9 |测试10|test11@test12|测试13 |测试14|test15@......“
我正在使用字符串[]str1=str.split([@])将上述字符串拆分为“@” 以便最终结果
str1[0]=测试1 |测试2 |测试3
str[1]=test4|test5|test6|test7
...
我使用的代码段
for (int x = 1; x < str1.length; x++) {
String[] st1 = str1 [x].trim().split("\\|");
System.out.println("first" + st1[0].trim());
System.out.println("second" + st1[1].trim());
System.out.println("third" + st1[2].trim());
System.out.println("fourth" + st1[3].trim());
List1.add(st1[0].trim());
List2.add(st1[1].trim());
List3.add(st1[2].trim());
List4.add(st1[3].trim());
}
在上述for循环中,当循环从x=2开始时,工作正常。但如果我给x=1,那么它会在“System.out.println(“fourth”st1[3].trim());”处抛出数组索引越界异常。是因为str1[0]只包含3项,而其余的由4项组成。所以现在我无法得到用“|”拆分后的第四个值。请告诉我如何得到第四个值。提前谢谢。
String str = "@test1|test2|test3@test4|test5|test6|test7@test8|test9|test10|test11@test12|test13|test14|test15@";
String[] str1 = str.split("[@]");
for (int x = 0; x < str1.length; x++) {
String[] str2 = str1[x].trim().split("\\|");
for (int y = 0; y < str2.length; y++) {
System.out.println(str2[y].trim());
}
}
输出:
test1
test2
test3
test4
test5
test6
test7
test8
test9
test10
test11
test12
test13
test14
test15
希望这对你有帮助。
你的字符串中有@我在任何地方都看不到,那么你为什么要用这个标记拆分字符串呢。
改变
String[] str1 = str.split("[@]")
到
String[] str1 = str.split("@")
要解决indexOutOfBounds,请执行以下操作:
for (int x = 1; x < str1.length; x++) {
String[] st1 = str1 [x].trim().split("\\|");
for (int j = 0; j < st1.length; j++)
{
System.out.println( j "= " + st1[j].trim());
}
}
ArrayIndexOutofBond即将到来,因为您正在访问第四个值,您可以通过以下两种方式获得该值,
String[] str1 = str.split("@");
for (int x = 1; x < str1.length; x++) {
String[] st1 = str1[x].trim().split("\\|");
for (int j = 0; j < st1.length; j++) {
System.out.println(st1[j]);
}
}
或
String[] str1 = str.split("@");
for (int x = 1; x < str1.length; x++) {
String[] st1 = str1[x].trim().split("\\|");
/*for (int j = 0; j < st1.length; j++) {
System.out.println(st1[j]);
}*/
if(st1.length> 0 )
System.out.println("first" + st1[0].trim());
if(st1.length> 1 )
System.out.println("second" + st1[1].trim());
if(st1.length> 2 )
System.out.println("third" + st1[2].trim());
if(st1.length> 3 )
System.out.println("fourth" + st1[3].trim());
}
问题内容: 因此,我正在编写一个简单的程序来输入字符串并计算总数。的米 所以,这是我的代码 where 和str是我接受过的字符串,但是此错误不断出现 这是什么错误以及如何将其删除? 问题答案: 字符串,有效索引从0到n-1; 更改 至
我试图在Java解决这个问题。我有一个很长的信息字符串,我想根据给定字段的长度拆分字符串。 示例:` FirstNameLastName yy-mm-dd549Eastwolframstreet 我有一个字段列表及其长度。有n个字段。示例字段: FirstName长度:9 姓氏长度:9 日期长度:8 地址:30 如果名称少于9个字符,则空格将占据其余位置。i、 e Lastname的长度为9,但只
问题内容: 我有一个名为的字符串,其形式像这样 。 我想使用:分隔符。 这样一来,单词将被拆分成自己的字符串,并将成为另一个字符串。 然后我只想使用2种不同的字符串来显示该字符串。 解决这个问题的最佳方法是什么? 问题答案: 你可能要删除第二个字符串的空格: 如果要用特殊字符(例如dot(。))分割字符串,则应在点之前使用转义字符\ 例: 还有其他方法可以做到这一点。例如,你可以使用类(来自):
假设我有一个包含“abc”“xyz”“123”的长字符串,我想把它拆分为[“abc”,“xyz”,“123”]如何?谢谢
问题内容: 我正在尝试找到一种将String拆分为String数组的方法,并且每当遇到白色香料时就需要对其进行拆分,例如 “嗨,我是保罗” 进入” “嗨”“我”“保罗” 如何使用RegularExpression在split()方法中表示空格? 问题答案: 您需要一个正则表达式,例如,这意味着: 每当遇到至少一个空格时就进行拆分 。完整的Java代码是:
问题内容: 我猜我正在收到此错误,因为字符串正在尝试对值进行子字符串化。但是那部分不能消除这个问题吗? 这是Java代码段: 我收到此错误: 问题答案: 我猜我正在收到此错误,因为字符串试图将Null值作为子字符串。但是“ .length()> 0”部分不能消除该问题吗? 不,在itemdescription为null时调用itemdescription.length()不会生成StringInd