gpt4 book ai didi

java - 获取与 jPasswordField 中的输入等效的字符串

转载 作者:行者123 更新时间:2023-12-01 11:15:41 25 4
gpt4 key购买 nike

我有一个代码,用于检查用户输入是否仅为字母数字,并根据标准检查输入的密码的强度。如果出现以下情况,则会出现带有注释的标签:

-字段为空

-使用了无效字符

并且还会显示密码是否为弱、中、强非常强

this.AlphaNumericOnly(this.jTextField1.getText(),this.warningLbl3);
this.passwordStrength(this.jTextField1.getText(),this.warningLbl4);

如果在 jtextfield 中使用此方法,效果很好。但是我想使用 jpasswordfield 来隐藏用户输入。

我已经尝试过:

.toString();

String.valueOf();

这个循环:

char[] input=(this.jPasswordField1.getPassword());
final_pass = "";
for(char x : input) {
final_pass += x;
}

但是该方法无法“检查”我转换的字符串。

这是我的方法..

public void AlphaNumericOnly(String input,JLabel obj){
if(!"".equals(input)){
obj.setText(" ");
warning=false;

char c[] = input.toCharArray();

int count = 0;
for(int x=0; x<c.length; x++){
if((!Character.isAlphabetic(c[x]))&&(!Character.isDigit(c[x]))){// && c[x]!='-' && c[x]!='(' && c[x]!=')' && c[x]!='+'&& c[x]!='/'&& c[x]!='\\'){
count=+1;
}
}
if(count>0){
obj.setText("*Please use valid characters.");
warning=true;
}else{
obj.setText(" ");
warning=false;
}
}else{
obj.setText("*This Field cannot be left Empty.");
warning=true;
}
}
private void passwordStrength(String input,JLabel obj){
char c[] = input.toCharArray();
int count=0;
int notAlphaNumericCount=0;
for(int j=0;j<c.length;j++){
if(Character.isAlphabetic(c[j])){
if(Character.isUpperCase(c[j])){
count++;
}
}else if(Character.isDigit(c[j])){

}else{
obj.setText(" ");
warning=false;
notAlphaNumericCount++;
}
}
if(notAlphaNumericCount==0){
if(input.length()<1){
obj.setText(" ");
warning=false;
}else if(input.length()<4){
obj.setText("Password Strength: WEAK");
obj.setForeground(Color.red);
}else if(input.length()<8){
obj.setText("Password Strength: MEDIUM");
obj.setForeground(Color.blue);
}else if(input.length()<10){
obj.setText("Password Strength: STRONG");
obj.setForeground(Color.green);
}else if(count!=0){
obj.setText("Password Strength: VERY STRONG");
obj.setForeground(Color.orange);
}
}
}

编辑:为了更直观的理解以下是我如何使用此方法:

username [Textfield input]- [obj label warning]
password [Textfield input]- [obj label warning]

[obj label which displays password strength]

最佳答案

嗯,因为getPassword()函数的返回值是char数组。您可以通过其构造函数轻松地将其转换为字符串。

new String(this.jPasswordField1.getPassword());

不过,就我个人而言,我认为最好将 passwordStrength 方法的参数更改为采用 char 数组而不是 String。因为您只使用参数 input 将其转换为 char 数组并获取其长度。而且,每次通过这种方式构造一个 String 时,都会创建一个新的 String 对象。

关于java - 获取与 jPasswordField 中的输入等效的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31851777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com