如何检查字符串是否包含特殊字符,例如:
[,],{,},{,),*,|,:,>,
如何检查字符串是否包含特殊字符,例如:
[,],{,},{,),*,|,:,>,
Answers:
Pattern p = Pattern.compile("[^a-z0-9 ]", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("I am a string");
boolean b = m.find();
if (b)
System.out.println("There is a special character in my string");
您可以使用以下代码从字符串中检测特殊字符。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class DetectSpecial{
public int getSpecialCharacterCount(String s) {
if (s == null || s.trim().isEmpty()) {
System.out.println("Incorrect format of string");
return 0;
}
Pattern p = Pattern.compile("[^A-Za-z0-9]");
Matcher m = p.matcher(s);
// boolean b = m.matches();
boolean b = m.find();
if (b)
System.out.println("There is a special character in my string ");
else
System.out.println("There is no special char.");
return 0;
}
}
如果您希望密码中包含字母,特殊字符和数字(至少8位数字),那么使用此代码,即可正常运行
public static boolean Password_Validation(String password)
{
if(password.length()>=8)
{
Pattern letter = Pattern.compile("[a-zA-z]");
Pattern digit = Pattern.compile("[0-9]");
Pattern special = Pattern.compile ("[!@#$%&*()_+=|<>?{}\\[\\]~-]");
//Pattern eight = Pattern.compile (".{8}");
Matcher hasLetter = letter.matcher(password);
Matcher hasDigit = digit.matcher(password);
Matcher hasSpecial = special.matcher(password);
return hasLetter.find() && hasDigit.find() && hasSpecial.find();
}
else
return false;
}
看java.lang.Character
课。它具有一些测试方法,您可能会找到适合您需求的方法。
示例:Character.isSpaceChar(c)
或!Character.isJavaLetter(c)
这已经在android 7.0到android 10.0中经过测试,并且可以正常工作
使用此代码检查字符串是否包含特殊字符和数字:
name = firstname.getText().toString(); //name is the variable that holds the string value
Pattern special= Pattern.compile("[^a-z0-9 ]", Pattern.CASE_INSENSITIVE);
Pattern number = Pattern.compile("[0-9]", Pattern.CASE_INSENSITIVE);
Matcher matcher = special.matcher(name);
Matcher matcherNumber = number.matcher(name);
boolean constainsSymbols = matcher.find();
boolean containsNumber = matcherNumber.find();
if(constainsSymbols == true){
//string contains special symbol/character
}
else if(containsNumber == true){
//string contains numbers
}
else{
//string doesn't contain special characters or numbers
}
//不使用正则表达式.....
String specialCharacters=" !#$%&'()*+,-./:;<=>?@[]^_`{|}~0123456789";
String name="3_ saroj@";
String str2[]=name.split("");
for (int i=0;i<str2.length;i++)
{
if (specialCharacters.contains(str2[i]))
{
System.out.println("true");
//break;
}
else
System.out.println("false");
}
//这是我发布的代码的更新版本/ * isValidName方法将检查作为参数传递的名称是否不应包含-1.空值或空格2.任何特殊字符3.数字(0-9)说明- -这里的str2是String数组变量,它存储作为参数传递的名称的拆分字符串。count变量将对出现的特殊字符的数量进行计数。如果满足所有条件,该方法将返回true * /
public boolean isValidName(String name)
{
String specialCharacters=" !#$%&'()*+,-./:;<=>?@[]^_`{|}~0123456789";
String str2[]=name.split("");
int count=0;
for (int i=0;i<str2.length;i++)
{
if (specialCharacters.contains(str2[i]))
{
count++;
}
}
if (name!=null && count==0 )
{
return true;
}
else
{
return false;
}
}
在字符串str2 [] = name.split(“”);中;在数组中添加一个额外的字符...让我以示例方式说明“ Aditya”。split(“”)将返回[,A,d,i,t,y,a]您的数组中将有一个额外的字符。 。
“ Aditya” .split(“”)不能按saroj routray的预期工作,您会在String => [,A,d,i,t,y,a]中得到一个额外的字符。
我已经对其进行了修改,请参见下面的代码,它可以按预期工作
public static boolean isValidName(String inputString) {
String specialCharacters = " !#$%&'()*+,-./:;<=>?@[]^_`{|}~0123456789";
String[] strlCharactersArray = new String[inputString.length()];
for (int i = 0; i < inputString.length(); i++) {
strlCharactersArray[i] = Character
.toString(inputString.charAt(i));
}
//now strlCharactersArray[i]=[A, d, i, t, y, a]
int count = 0;
for (int i = 0; i < strlCharactersArray.length; i++) {
if (specialCharacters.contains( strlCharactersArray[i])) {
count++;
}
}
if (inputString != null && count == 0) {
return true;
} else {
return false;
}
}
使用java.util.regex.Pattern类的静态方法matchs(regex,String obj)
regex:小写字母和大写字母以及0-9之间的数字
String obj:要检查其是否包含特殊字符的String对象。
如果仅包含字符和数字,则返回布尔值true,否则返回布尔值false
。示例。
String isin = "12GBIU34RT12";<br>
if(Pattern.matches("[a-zA-Z0-9]+", isin)<br>{<br>
System.out.println("Valid isin");<br>
}else{<br>
System.out.println("Invalid isin");<br>
}