Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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用某些字符替换字符串以隐藏字符串?_Java_String_Character_Replace - Fatal编程技术网

Java用某些字符替换字符串以隐藏字符串?

Java用某些字符替换字符串以隐藏字符串?,java,string,character,replace,Java,String,Character,Replace,好的,我想用特定的输入替换用户返回的字符串。我想替换每个小写字母,但不是空格!,在带有“?”的字符串中。插入的“?”应该放在print语句中,末尾带有随机空格(“”)。谢谢你的帮助 import java.util.Scanner; public class Program05 { public static void main(String[] args) { Scanner scanner01 = new Scanner(System.in); Stri

好的,我想用特定的输入替换用户返回的字符串。我想替换每个小写字母,但不是空格!,在带有“?”的字符串中。插入的“?”应该放在print语句中,末尾带有随机空格(“”)。谢谢你的帮助

import java.util.Scanner;
public class Program05 {

    public static void main(String[] args) 

    {
    Scanner scanner01 = new Scanner(System.in);
    String inputPhrase; 


        do {
            System.out.print("Enter a common phrase to begin!: ");
            inputPhrase = scanner01.nextLine(); 

        }  while (!inputPhrase.matches("[a-z ]+"));

        System.out.print("Press [ENTER] to continue...");  
            try  
            {  
              System.in.read();  
              System.in.skip(System.in.available()); 
            } catch(Exception e){e.printStackTrace();} //though that was a neat little touch 


         do {

            boolean valid = true;


            for (int i = 0; i < inputPhrase.length(); i++)
                {

                 System.out.println("Common Phrase\n-------------" + "\n" + " " );  


                    }






            //System.out.print(inputPhrase);



         } while (!inputPhrase.matches("[a-z ]+"));

    }

}
import java.util.Scanner;
公共课程计划05{
公共静态void main(字符串[]args)
{
扫描仪scanner01=新扫描仪(System.in);
字符串输入短语;
做{
System.out.print(“输入一个常用短语开始!:”;
InputPhase=scanner01.nextLine();
}while(!inputPhase.matches(“[a-z]+”));
系统输出打印(“按[ENTER]继续…”);
尝试
{  
System.in.read();
System.in.skip(System.in.available());
}catch(异常e){e.printStackTrace();}//尽管这是一个巧妙的小动作
做{
布尔有效=真;
for(int i=0;i
假设字符串位于变量s中。然后你可以一个字母一个字母的循环

for (int i = 0; i < s.length(); i++) {
    char c = s.charAt(i);
}
for(int i=0;i
所以这归结为检查char c是否是小写的,并相应地执行。确定字符c是否为小写的一种可能方法是检查其int值,并查看其是否介于97和122之间(包括97和122)

int intValue = (int) c;
if (intValue >= 97 && intValue <= 122) { }
intValue=(int)c;

如果(intValue>=97&&intValue,您可以简单地使用API中内置的正则表达式功能,例如

String question = "This is a Test String".replaceAll("([a-z])", "?");
System.out.println(question);
将输出

T??? ?? ? T??? S?????
nb
[a-z]
给出了相同的结果

您只需与正则表达式
\p{Lower}
结合使用即可:

String str = "Hello World";
System.out.println(str.replaceAll("\\p{Lower}", "?"));
H???W????
在大多数情况下,我们希望隐藏我们的个人详细信息,如电话号码、电子邮件等。在这里,我假设您希望隐藏电子邮件或电话号码中的字符

假设
CredentialModel
是一个类,看起来像:

public class CredentialModel {
    private String username;
    private String phoneno;
    private String email;

    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPhoneno() {
        return phoneno;
    }
    public void setPhoneno(String phoneno) {
        this.phoneno = phoneno;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    @Override
    public String toString() {
        return "CredentialModel [username=" + username + ", phoneno=" + phoneno + ", email=" + email + "]";
    }
}
加密方法如下所示:

public CredentialModel encryptPrivateDetails(CredentialModel credentialModel) {
    String phoneno = credentialModel.getPhoneno();
    String email = credentialModel.getEmail().split("\\@")[0];
    String domain = credentialModel.getEmail().split("\\@")[1];
    if (phoneno != null) {
        int minlength = 9;
        int blocklength = 5;
        if (phoneno.length() > blocklength) {
            if (phoneno.length() > minlength) {
                int visibleStartLength = 3;
                credentialModel.setPhoneno(phoneno.substring(0, visibleStartLength)
                        + String.format("%" + blocklength + "s", "").replace(' ', 'x')
                        + phoneno.substring(visibleStartLength + blocklength));
            } else
                credentialModel.setPhoneno(String.format("%" + blocklength + "s", "").replace(' ', 'x')
                        + phoneno.substring(blocklength));
        }
    }
    if (email != null) {
        int minlength = 2;
        if (email.length() > minlength)
            credentialModel.setEmail(email.substring(0, minlength)
                    + String.format("%" + (email.length() - minlength + 1) + "s", "@").replace(' ', 'x') + domain);
        else
            credentialModel.setEmail(String.format("%" + (email.length() + 1) + "s", "@").replace(' ', 'x') + domain);
    }
    return credentialModel;
}

请根据您的要求进行调整。

AFAIK使用
扫描仪或简单的阅读器是不可能的。从Java 6中,您可以使用它来满足您的需要。不要捕获
异常
!捕获实际的异常类型,如果您确实不想处理它,请将其包装在
运行时异常
中,然后在n不要打印堆栈跟踪。以后您将省去一些调试的麻烦。哦,但我的代码只允许在字符串中输入小写字符。因此,如果输入了任何其他字符,它将进行重新编译。很抱歉,我没有澄清这一点。!InputPhase.matches(“[a-z]+”)恐怕我误解了你的意思。你能举几个例子说明字符串替换应该达到什么效果吗?例如,输入“xyz”你想要什么呢?等等?我认为我上面的回答不适用于你实际想做的事情。你也可以编辑你的原始问题,如果你愿意,也可以添加这些新信息。那么我们如何才能取回原始文本
public CredentialModel encryptPrivateDetails(CredentialModel credentialModel) {
    String phoneno = credentialModel.getPhoneno();
    String email = credentialModel.getEmail().split("\\@")[0];
    String domain = credentialModel.getEmail().split("\\@")[1];
    if (phoneno != null) {
        int minlength = 9;
        int blocklength = 5;
        if (phoneno.length() > blocklength) {
            if (phoneno.length() > minlength) {
                int visibleStartLength = 3;
                credentialModel.setPhoneno(phoneno.substring(0, visibleStartLength)
                        + String.format("%" + blocklength + "s", "").replace(' ', 'x')
                        + phoneno.substring(visibleStartLength + blocklength));
            } else
                credentialModel.setPhoneno(String.format("%" + blocklength + "s", "").replace(' ', 'x')
                        + phoneno.substring(blocklength));
        }
    }
    if (email != null) {
        int minlength = 2;
        if (email.length() > minlength)
            credentialModel.setEmail(email.substring(0, minlength)
                    + String.format("%" + (email.length() - minlength + 1) + "s", "@").replace(' ', 'x') + domain);
        else
            credentialModel.setEmail(String.format("%" + (email.length() + 1) + "s", "@").replace(' ', 'x') + domain);
    }
    return credentialModel;
}