1

好的,所以我想用特定输入替换用户返回的字符串。我想用'?'替换字符串中的每个小写字母,但不是空格!插入'?'的地方 should go 在 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 ]+"));

    }

}
4

4 回答 4

0

假设您在变量 s 中有您的字符串。然后你可以在一个循环中逐个字母地使用

for (int i = 0; i < s.length(); i++) {
    char c = s.charAt(i);
}

所以这归结为检查 char c 是否为小写,并采取相应措施。确定 char c 是否为小写的一种可能方法是检查其 int 值并查看其是否介于 97 和 122 之间。

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

如果是,则将其替换为问号。

一个简单的方法是创建一个临时字符串,当你循环访问源字符串时,添加每个字母直到你得到小写字母,在这种情况下你添加一个问号直到你完成。

于 2013-07-11T02:03:08.730 回答
0

您可以简单地利用 API 中内置的正则表达式功能,例如...

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

会输出...

T??? ?? ? T??? S?????

nb[a-z]给出相同的结果

于 2013-07-11T02:16:22.307 回答
0

您可以replaceAll与正则表达式一起使用\p{Lower}

String str = "Hello World";
System.out.println(str.replaceAll("\\p{Lower}", "?"));
H????哇???
于 2013-07-11T02:16:49.257 回答
0

在大多数情况下,我们希望隐藏我们的个人详细信息,例如电话号码、电子邮件等。这里我假设您要隐藏电子邮件或电话号码中的字符。

假设 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;
}

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

于 2019-09-25T09:59:16.617 回答