当前位置: 首页 > 知识库问答 >
问题:

字符串拆分并保存到JAVA7中的ArrayList[已关闭]

姜志
2023-03-14

我有一个字符串,需要将其拆分并存储在ArrayList中,如下所示;所有这些都使用Java7。

下面是我程序的输入;

String inputStr = "ABC:DONE:07JAN90:1234:00001111:U:1234567:9632587:4561230:EC:IN:4815263:3621547:0314783)";

我试图在这里实现的是一个ArrayList,如下所示,在它分组后。

   "List" : [ 
    {
    1234567,
    4815263
    },
    {
     9632587,
    3621547
    },
     {
     4561230,
     0314783
     }
    ]
    

我写了一个示例代码,但似乎没有将元素B分组到列表中。我们如何将这两个元素分组到列表中。

示例代码:

    String splitStringNeeded = "ABC:DONE:07JAN90:1352:00009279:U:1234567:9632587:4561230:EC:GB:4815263:3621547:0314783)";
            
    String[] vElements = splitStringNeeded.split(":");
    String[] grpV = Arrays.copyOfRange(vElements, 6,10 );
    String[] grpT = Arrays.copyOfRange(vElements, 12, vElements.length);
        
    List<String> groupedV = Arrays.asList(grpV);
    List<String> groupedT = Arrays.asList(grpT);
    
    for(String splitV : groupedV){
        for(String splitT : groupedT){
        
            System.out.println(splitV);
            System.out.println(splitT);
            break;
        
        }
    }
    

我得到下面的输出,其中elementB没有改变,而是重复自身。有人能给我指路吗

"List" : [ 
    {
    1234567,
    4815263
    },
    {
     9632587,
    4815263
    },
     {
     4561230,
     4815263
     }
    ]
    

我们甚至可以考虑以下输入:

ABC:DONE:07JAN90:1352:00009279:U:1234567:9632587:0:EC:GB:4815263:3621547

ABC:DONE:07JAN90:1352:00009279:U:1234567:0:0:EC:GB:4815263

共有1个答案

景唯
2023-03-14

我刚刚将示例代码中的嵌套for循环修改为单个for循环
当然,没有什么未知的,例如
源字符串是否始终遵循与所显示的相同的模式
列表的长度groupedV和groupedT是否始终具有相同的长度等,这是不考虑的

String splitStringNeeded = "ABC:DONE:07JAN90:1352:00009279:U:1234567:9632587:4561230:EC:GB:4815263:3621547:0314783";

/* Additional code for dynamic allocation of indexes
int indexU = splitStringNeeded.indexOf("U:");
int indexOfGb = splitStringNeeded.indexOf("EC:GB:");
System.out.println("Index of U "+indexU);
System.out.println("Index of GB "+indexOfGb);
String sub1 = splitStringNeeded.substring(indexU+2, indexOfGb-1);
System.out.println("Substring 1 = "+sub1);
String sub2 = splitStringNeeded.substring(indexOfGb+6, splitStringNeeded.length());
System.out.println("Substring 2 = "+sub2);
    //Additional code for dynamic allocation of indexes
*/

String[] vElements = splitStringNeeded.split(":");

String[] grpV = Arrays.copyOfRange(vElements, 6, 9);
String[] grpT = Arrays.copyOfRange(vElements, 11, vElements.length);

List<String> groupedV = Arrays.asList(grpV);
List<String> groupedT = Arrays.asList(grpT);

if(groupedV.size() == groupedT.size()) {
    for(int i=0; i<groupedV.size(); i++){
        System.out.println(groupedV.get(i));
        System.out.println(groupedT.get(i));
    }
}
/*for (String splitV : groupedV) {
    for (String splitT : groupedT) {
        if (!splitV.equals("0")) {
            System.out.println(splitV);
            System.out.println(splitT);
            break;
        }
    }
}*/

添加了注释代码来动态选择索引值,而不是像6,10,12这样的硬编码

如果取消注释第一个注释块,输出如下所示

Index of U 31
Index of GB 57
Substring 1 = 1234567:9632587:4561230
Substring 2 = 4815263:3621547:0314783
1234567
4815263
9632587
3621547
4561230
0314783
 类似资料:
  • 我有一个字符串,其中我需要拆分它并存储在ArrayList中,如下所示;所有这些都使用Java7。 下面是我的程序的输入; 我在这里试图实现的是一个数组列表,如下所示。 我编写了一个示例代码,但似乎没有将elementB分组到列表中。我们如何将这两个元素组合成一个列表。 示例代码: 我得到下面的输出,其中elementB没有改变,而是重复自身。有人能给我指路吗

  • 我想执行将单个字符串转换为矩阵或表格形式的拆分逻辑。我有下面的弦结构。 每次钉钉结构都是一样的,但产品应该是可变的(意味着产品可以增加或减少) 我期待的输出如下 这意味着我需要将数据存储在单独的ArrayList中,如: Sr.ArrayList包含1和2,Particulars ArrayList包含Knife和Pirates Cap等等。 我尝试了几种方法但都没有成功 首先我想我必须使用这个链

  • 因为我需要以下O/P > 列表项 String val1=开始//完成//First//com//上传Dummy123//First//下载 String val2=First 输出=First//com//上传Dummy123//First//下载 列表项 字符串val1=开始//完成//首先//com//上载dummy123//首先//下载 字符串val2=完成 输出=完成//首先//com/

  • 问题内容: 我正在Java中的一个需要嵌套字符串的项目中工作。 对于纯文本形式的输入字符串,如下所示: 这是“字符串”,这是“ \嵌套”字符串 结果必须为以下内容: 请注意 ,我希望保留序列。 我有以下方法: 而且我需要根据给定的规则从给定的参数中创建一个字符串数组,而不使用 Java Collection Framework 或其派生类。 我不确定如何解决这个问题。 可以做一个正则表达式来解决这

  • 问题内容: 我有以下字符串(Java 1.5): 我需要一个数组: 用Java最方便的方法是什么? 问题答案: 这将为您提供所需的数组,只有第一项为空。和: 这将使数组没有空的第一项。 此处的关键是零宽度正向超前(非捕获构造)(请参阅regex pattern docs)。 表示“或者;或:” 是字边界的-在那里是为了不将第一个视为定界符(因为它是序列的开头)

  • 问题 你想拆分一个字符串。 解决方案 使用 JavaScript 字符串的 split() 方法: "foo bar baz".split " " # => [ 'foo', 'bar', 'baz' ] 讨论 String 的这个 split() 方法是标准的 JavaScript 方法。可以用来基于任何分隔符——包括正则表达式来拆分字符串。这个方法还可以接受第二个参数,用于指定返回的子字符串数