如何将 Pattern 和 Matcher 与 StringBuffer 或 char[] 类型而不是 String 一起使用?
How can I use Pattern and Matcher with StringBuffer or char[] types instead of String?
如何使用这样的方法
private boolean respectPattern(String password) {
Pattern passwordPattern = Pattern.compile(
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[.@$!%*?&])[A-Za-z\d@$!%*?&.]{8,}$",
Pattern.CASE_INSENSITIVE);
Matcher matcher = passwordPattern.matcher(password);
return matcher.find();
}
如果我将 password
类型替换为 StringBuffer
或 char[]
?
if I replace password type with StringBuffer or char[]?
如果将密码类型替换为StringBuffer
:
按原样使用,即以下将成功编译并按预期工作:
private boolean respectPattern(StringBuffer password) {
Pattern passwordPattern = Pattern.compile(
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[.@$!%*?&])[A-Za-z\d@$!%*?&.]{8,}$",
Pattern.CASE_INSENSITIVE);
Matcher matcher = passwordPattern.matcher(password);
return matcher.find();
}
如果您将密码类型替换为 char[]
:
使用passwordPattern.matcher(String.valueOf(password));
class java util.regex.Pattern
中的方法 matcher()
接受一个类型为 CharSequence 的参数,它是一个接口。根据 javadoc,有几个实现 classes,包括 StringBuffer
。如果 none 的现有实现适合您的需要,您可以随时编写自己的实现。
例如,使用 CharBuffer
CharBuffer cb = CharBuffer.allocate(11);
cb.put(new char[]{'S','e','c', 'r', 'e', 't', ' ', 'P', 'a', 's', 's'});
Pattern passwordPattern = Pattern.compile(
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[.@$!%*?&])[A-Za-z\d@$!%*?&.]{8,}$",
Pattern.CASE_INSENSITIVE);
Matcher matcher = passwordPattern.matcher(cb);
如何使用这样的方法
private boolean respectPattern(String password) {
Pattern passwordPattern = Pattern.compile(
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[.@$!%*?&])[A-Za-z\d@$!%*?&.]{8,}$",
Pattern.CASE_INSENSITIVE);
Matcher matcher = passwordPattern.matcher(password);
return matcher.find();
}
如果我将 password
类型替换为 StringBuffer
或 char[]
?
if I replace password type with StringBuffer or char[]?
如果将密码类型替换为StringBuffer
:
按原样使用,即以下将成功编译并按预期工作:
private boolean respectPattern(StringBuffer password) {
Pattern passwordPattern = Pattern.compile(
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[.@$!%*?&])[A-Za-z\d@$!%*?&.]{8,}$",
Pattern.CASE_INSENSITIVE);
Matcher matcher = passwordPattern.matcher(password);
return matcher.find();
}
如果您将密码类型替换为 char[]
:
使用passwordPattern.matcher(String.valueOf(password));
class java util.regex.Pattern
中的方法 matcher()
接受一个类型为 CharSequence 的参数,它是一个接口。根据 javadoc,有几个实现 classes,包括 StringBuffer
。如果 none 的现有实现适合您的需要,您可以随时编写自己的实现。
例如,使用 CharBuffer
CharBuffer cb = CharBuffer.allocate(11);
cb.put(new char[]{'S','e','c', 'r', 'e', 't', ' ', 'P', 'a', 's', 's'});
Pattern passwordPattern = Pattern.compile(
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[.@$!%*?&])[A-Za-z\d@$!%*?&.]{8,}$",
Pattern.CASE_INSENSITIVE);
Matcher matcher = passwordPattern.matcher(cb);