为了账号安全,请及时绑定邮箱和手机立即绑定

按条件拆分和配对子字符串

按条件拆分和配对子字符串

www说 2022-11-30 16:49:21
我有一个这样的字符串:"aa-bb,ccdd,eeff,gg-gg,cc-gg". 我需要按'-'符号拆分字符串并从中创建两个字符串,但如果原始字符串的逗号分隔部分不包含'-',则需要使用一些占位符字符而不是子字符串。在上面的示例输出的情况下应该是:字符串 1:"{aa,ccdd,eeff,gg,cc}"字符串 2:"{bb,0,0,gg,gg}"我不能使用该lastIndexOf()方法,因为输入在一个字符串中。我不确定零件有多少。if(rawIndication.contains("-")){    String[] parts = rawIndication.split("-");    String part1 = parts[0];    String part2 = parts[1];}
查看完整描述

3 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

这是一个使用流的 Java 8 解决方案。逻辑是首先用逗号分割输入字符串,生成一个术语数组。然后,对于每个术语,我们在 dash 上再次拆分,保留第一个条目。对于没有破折号的术语,将只保留整个字符串。最后,我们连接回输出字符串。


String input = "aa-bb,ccdd,eeff,gg-gg,cc-gg";

int pos = 1;

String output = String.join(",", Arrays.stream(parts) 

    .map(e -> e.split("-").length >= (pos+1) ? e.split("-")[pos] : "0")

    .toArray(String[]::new));


System.out.println(output);

这输出:


bb,0,0,gg,gg


查看完整回答
反对 回复 2022-11-30
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

    List<String> list1 = new ArrayList<>();

    List<String> list2 = new ArrayList<>();


    // First split the source String by comma to separate main parts

    String[] mainParts = sourceStr.split(",");


    for (String mainPart: mainParts) {

        // Check if each part contains '-' character

        if (mainPart.contains("-")) {

            // If contains '-', split and add the 2 parts to 2 arrays

            String[] subParts = mainPart.split("-");

            list1.add(subParts[0]);

            list2.add(subParts[1]);


        } else {

            // If does not contain '-', add complete part to 1st array and add placeholder to 2nd array

            list1.add(mainPart);

            list2.add("0");

        }

    }


    // Build the final Strings by joining String parts by commas and enclosing between parentheses

    String str1 = "{" + String.join(",", list1) + "}";

    String str2 = "{" + String.join(",", list2) + "}";


    System.out.println(str1);

    System.out.println(str2);


查看完整回答
反对 回复 2022-11-30
?
四季花海

TA贡献1811条经验 获得超5个赞

我认为这可以解决您的问题。


private static void splitStrings() {

   List<String> list = Arrays.asList("aa-bb", "ccdd", "eeff", "gg-gg", "cc-gg");

    List firstPartList = new ArrayList<>();

    List secondPartList = new ArrayList<>();

    for (String undividedString : list){

        if(undividedString.contains("-")){

            String[] dividedParts = undividedString.split("-");

            String firstPart = dividedParts[0];

            String secondPart = dividedParts[1];

            firstPartList.add(firstPart);

            secondPartList.add(secondPart);

        } else{

            firstPartList.add(undividedString);

            secondPartList.add("0");

        }

    }


    System.out.println(firstPartList);

    System.out.println(secondPartList);

}

输出是 -


[aa, ccdd, eeff, gg, cc]

[bb, 0, 0, gg, gg]


查看完整回答
反对 回复 2022-11-30
  • 3 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号