繁体   English   中英

如果在 java 中具有 # 作为前缀,则从逗号分隔的字符串中删除并获取文本?

[英]Remove and get text, from comma separated string if it has # as prefix in java?

我在 java 中有一个字符串

输入

String str = "1,2,3,11,#5,#7,9";

Output 所需

String result = "1,2,3,11,9";
// And 5,7 with special character # in separate Array-list
//List<String> list = ["5","7"];

注意:这个特殊字符#是动态的,它可能出现在字符串中,也可能不出现。

我知道如何使用 str.replaceAll("#", ""); 删除 #,但是如何在单独的列表中获取 5 和 7。

    String str = "1,2,3,11,#5,#7,9";
    List<String> parts = Arrays.asList(str.split(","));
    List<Integer> normalNumbers = parts.stream().filter(i -> !i.startsWith("#")).map(Integer::parseInt).collect(
            Collectors.toList());
    List<Integer> specialNumbers = parts.stream().filter(i -> i.startsWith("#")).map(i -> Integer.valueOf(i.substring(1))).collect(Collectors.toList());
    System.out.println(normalNumbers);
    System.out.println(specialNumbers);

Java 中的String有一个名为split()的方法。 您可以轻松地使用它来获取所有带有 & 且不带prefix #

        String str = "1,2,3,11,#5,#7,9";
        
        List<Integer> res = Arrays.asList(str.split(",")).stream().map(ch->{
            if(!ch.startsWith("#")){
                return Integer.parseInt(ch);
            }else {
                return null;
            }
        }).filter(Objects::nonNull).collect(Collectors.toList());

        System.out.println(res);

String str = "1,2,3,11,#5,#7,9";
List<String> s = Arrays.asList(str.split(",")).stream().filter(a->a.startsWith("#")).map(a->a.replace("#", "")).collect(Collectors.toList());
System.out.println(s);  //Output [5, 7]
str = Arrays.asList(str.split(",")).stream().filter(a->!a.startsWith("#")).collect(Collectors.joining(","));
System.out.println(str); //Output 1,2,3,11,9

1.你可以试试String.split(),

String[] tokens = str.split(","); 

2.创建2个新的字符串数组列表,

ArrayList<String> num = new ArrayList<String>();
ArrayList<String> result = new ArrayList<String>();

3.然后遍历令牌,检查每个令牌,然后推送,

for(int i = 0; i < tokens.length; i++)
{
    if(tokens[i].charAt(0) == '#')
        num.add(String.valueOf(tokens[i].charAt(1)));
    else
        result.add(tokens[i]);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM