替换字符串中的数字

时间:2018-08-02 10:32:32

标签: java string numbers

我有一串数字,如下所示:

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”);

这对我有用,但是当我单独编写它时不起作用。

5 个答案:

答案 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”);

///这是我找到解决这种情况的唯一方法。