我有一串数字,如下所示:
String digits = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10";
我需要将小于5的值设置为0,将其余的设置为1。
我尝试了
digits = digits.replaceAll("[56789]", "1");// etc.
但这似乎不起作用。
尝试了已经在SO上提供的解决方案,但我无法使它们正常工作
如果确实有一个可以帮助我的问题,请链接它,我将删除它。
解决方案 return digits.replaceAll(“ [0-4]”,“ 0”)。replaceAll(“ [5-9]”,“ 1”);
这对我有用,但是当我单独编写它时不起作用。
答案 0 :(得分:2)
尝试
digits = digits.replaceAll("([0-4])", "0");
digits = digits.replaceAll("([5-9])", "1")
如果44不应该变为00
digits =digits.replaceAll("\\b([0-4]\\b)", "0");
digits =digits.replaceAll("\\b([5-9]\\b)", "1");
答案 1 :(得分:2)
如果您使用的是Java 8,则可以使用:
String digits = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10";
String result = Arrays.stream(digits.split(",\\s*"))// split with comma and spaces
.map(Integer::valueOf) // parse your string to Integer
.map(i -> i > 0 && i < 5 ? "1" : "0") // if condition is true return 1 else 0
.collect(Collectors.joining(", ")); // collect the result in the end
输出
1, 1, 1, 1, 0, 0, 0, 0, 0, 0
答案 2 :(得分:1)
您不能将字符串数组转换为int数组并完成工作吗?
String[] strArray = a.
int[] intArray = new int[strArray.length];
for(int i = 0; i < strArray.length; i++) {
intArray[i] = Integer.parseInt(strArray[i]);
// Here you can implement your business logic
}
如果您想成为字符串,则可以执行以下操作:
Arrays.toString(array)
答案 3 :(得分:0)
类似的事情可能会起作用
//At the top
import java.lang.StringBuffer;
String digits = "1,2,3,4,5,6,7,8,9";
StringBuffer dig = new StringBuffer(digits);
for(int p = 0; p < dig.length(); p++){
char h = dig.charAt(p);
if(Character.isDigit(h)){
if(h < '5'){
dig.setCharAt(p,'0');
}
else if(h >= '5'){
dig.setCharAt(p,'1');
}
}
}
digits = dig.toString();
System.out.println(digits);
StringBuffer提供了类似于对象的可变字符串。
答案 4 :(得分:0)
return digits.replaceAll(“ [0-4]”,“ 0”)。replaceAll(“ [5-9]”,“ 1”);
///这是我找到解决这种情况的唯一方法。