Java 计算给定字符串中特殊字符的数量
我正在尝试制作一个程序来计算给定字符串中的特殊字符。但它不起作用。这是我的密码Java 计算给定字符串中特殊字符的数量,java,arrays,string,character,Java,Arrays,String,Character,我正在尝试制作一个程序来计算给定字符串中的特殊字符。但它不起作用。这是我的密码 public static final String []specialChars = {"!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "[", "]", "|", ";", "'", ",", ".", "/", "{", "}",
public static final String []specialChars = {"!", "@", "#", "$", "%", "^", "&", "*", "(", ")",
"[", "]", "|", ";", "'", ",", ".", "/", "{", "}",
"\\", ":", "\"", "<", ">", "?" };
问题是你只考虑最后一个字符的个数。我怀疑你想要所有特殊字符计数的总和
for( int x = 0; x < specialChars.length ; ++x) {
specialCharCount += password.length()
- password.replaceAll("\\" + specialChars[x], "").length();
}
for(int x=0;x
顺便说一句,在调试器中逐步检查代码会很快发现这一点
怎么样
String SPECIAL_CHARS_REGEX = "[!@#$%^&*()\\[\\]|;',./{}\\\\:\"<>?]";
int specials = password.split(SPECIAL_CHARS_REGEX, -1).length - 1;
String SPECIAL_CHARS_REGEX=“[!@$%^&*()\[\\]\\\”,./{\\\\:\“?”;
int specials=password.split(SPECIAL_CHARS_REGEX,-1);
我看到的代码中很少有问题
password.replaceAll(“\\specialChars[x]”,“”)
加引号。在您的情况下,它被视为字符串文字,而不是specialChars[x]的实际值
“特殊准星[x]”
和特殊准星[x]
当我添加
+
时,它仍然是零。当我使用特殊字符正则表达式时,输出变成-1
我的示例输入是%
@Patrick,它没有计算任何尾随的特殊字符,现在我知道了,我在一个参数中丢失了-1
。顺便说一句,-1
在那里用了什么?谢谢你,先生根据我的replaceAll
计算特殊字符的数量。这很好。但下次它进入循环时,您的密码仍将具有初始值,而不是替换的值。因此整个循环的password.length()将始终相同。您可能需要检查逻辑。
for( int x = 0; x < specialChars.length ; ++x) {
specialCharCount += password.length()
- password.replaceAll("\\" + specialChars[x], "").length();
}
String SPECIAL_CHARS_REGEX = "[!@#$%^&*()\\[\\]|;',./{}\\\\:\"<>?]";
int specials = password.split(SPECIAL_CHARS_REGEX, -1).length - 1;