Java toString()隐藏信息
如何让我的toString方法只返回字符串的某些部分,例如,我有一个带有构造函数的名称和姓氏变量。我想使用一个toString方法,这样它只返回每个名称的第一个字母,用占位符填充其余的部分,例如'-'Java toString()隐藏信息,java,Java,如何让我的toString方法只返回字符串的某些部分,例如,我有一个带有构造函数的名称和姓氏变量。我想使用一个toString方法,这样它只返回每个名称的第一个字母,用占位符填充其余的部分,例如'-' enter code here private String foreame = null; private String surname = null; public FullName(String forename, String surname) { this.forename
enter code here
private String foreame = null;
private String surname = null;
public FullName(String forename, String surname)
{
this.forename = forename;
this.surname = surname;
}
因此,我可以在类中为James Roy的名字获得类似“J---R--”的输出,重写toString方法如下:
@Override
public String toString() {
return forename.replaceAll("\\B\\w", "-")) + " " + surname.replaceAll("\\B\\w", "-"));
}
或者,更简洁地说:
@Override
public String toString() {
return (forename + " " + surname).replaceAll("\\B\\w", "-");
}
replaceAll将用标记“-”替换字符串中除第一个字符以外的所有字符,从而获得所需的结果
请注意,因为java使用“\”作为转义标记,所以您需要使用两个转义标记,如图所示。重写
toString()
方法。我错过了这个要求。啊,是的,这非常有用。谢谢,如果我想只使用最后一个字母或同时使用第一个和最后一个字母,您能解释一下“\\B\\w”是如何工作的吗,符号实际上在做什么“\\B\\w”是一个正则表达式。\B检查以确保当前字符不在字边界,因此排除第一个字符。\w匹配任何单词字符(缩写为[a-zA-Z_0-9])。作为组合,它将排除第一个字符(因为它位于单词边界上),并匹配其余字符。如果您想同时使用第一个和最后一个,出于同样的原因,您可以使用“\\B\\w\\B”。我将添加一些有用的正则表达式链接。