[英]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.