Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java toString()隐藏信息_Java - Fatal编程技术网

Java 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

如何让我的toString方法只返回字符串的某些部分,例如,我有一个带有构造函数的名称和姓氏变量。我想使用一个toString方法,这样它只返回每个名称的第一个字母,用占位符填充其余的部分,例如'-'

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”。我将添加一些有用的正则表达式链接。