用字符串中的字符替换数字

Replace digits by character in String

我想用某个字符替换ssn。例如:

public char filter = "a";
public String ssn = 123-45-6789
public replace(string ssn){
    //replace ssn = aaa-aa-aaaa because filter = "a"
}

谁能告诉我该怎么做,因为它在字符串内部有“-”?

如果您只想替换数字,请尝试以下代码:

public String replace(string ssn) {
     return ssn.replaceAll("[0-9]", "a");
}

正则表达式[0-9]定义了哪些字符应该被替换(0到9之间的每个"character",意思是:只有数字)。

您不能修改字符串,因为它是不可变的 class。但是您可以使用替换值创建新字符串。所以

  • 创建StringBuidler
  • 遍历 ssn 的所有字符(toCharArray() 在这里很有用)
    • 如果 char 是数字附加 filter 到构建器(想到 Character.isDigit(char)
    • 如果 char 是 -(或非数字)将 '-' 附加到构建器
  • 将生成器转换为字符串

您也可以尝试使用 replaceAll 和仅匹配数字的正则表达式。

要将正则表达式与 replaceAll() 结合使用,您需要将过滤器设为字符串。同样,您需要在替换函数中 return 一个字符串。 请尝试以下操作:

String filter = "a";
public String replace(String ssn)
{
    return ssn.replaceAll("[0-9]",filter);
}