Java用某些字符替换字符串以隐藏字符串?
好的,我想用特定的输入替换用户返回的字符串。我想替换每个小写字母,但不是空格!,在带有“?”的字符串中。插入的“?”应该放在print语句中,末尾带有随机空格(“”)。谢谢你的帮助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
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;
}