Подтвердить что ты не робот

Проверьте, содержит ли строка специальный символ

Как проверить, содержит ли строка специальный символ, такой как:

[,],{,},{,),*,|,:,>,
4b9b3361

Ответ 1

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");

Ответ 2

Вы можете использовать следующий код для обнаружения специального символа из строки.

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;
 }
}

Ответ 3

Если он соответствует регулярному выражению [a-zA-Z0-9 ]*, то в нем нет специальных символов.

Ответ 4

Если вы хотите иметь ПИСЬМА, СПЕЦИАЛЬНЫЕ ХАРАКТЕРЫ и НОМЕРА в своем пароле с не менее чем 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 ("[[email protected]#$%&*()_+=|<>?{}\\[\\]~-]");
        //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;

}

Ответ 5

Что вы называете "особым персонажем"? Если вы имеете в виду что-то вроде "ничего, что не является буквенно-цифровым", вы можете использовать класс org.apache.commons.lang.StringUtils(методы IsAlpha/IsNumeric/IsWhitespace/IsAsciiPrintable).

Если это не так тривиально, вы можете использовать регулярное выражение, которое определяет точный список символов, который вы принимаете, и сопоставлять строку с ним.

Ответ 6

Все зависит от того, что вы подразумеваете под "специальным". В регулярном выражении вы можете указать

  • \W означает не-альфанумерный
  • \p {Punct} означает символы пунктуации

Я подозреваю, что последнее - это то, что вы имеете в виду. Но если вы не используете список [], чтобы точно указать, что вы хотите.

Ответ 7

Посмотрите на класс java.lang.Character. В нем есть несколько методов тестирования, и вы можете найти тот, который соответствует вашим потребностям.

Примеры: Character.isSpaceChar(c) или !Character.isJavaLetter(c)

Ответ 8

Сначала вы должны исчерпывающе идентифицировать специальные символы, которые вы хотите проверить.

Затем вы можете написать регулярное выражение и использовать

public boolean matches(String regex)

Ответ 9

Посетите каждый символ в строке, чтобы увидеть, находится ли этот символ в черном списке специальных символов; это O (n * m).

Псевдокод:

for each char in string:
  if char in blacklist:
    ...

Сложность может быть немного улучшена путем сортировки черного списка, чтобы вы могли рано выйти из каждой проверки. Однако функция поиска строк, вероятно, является родным кодом, поэтому эта оптимизация, которая будет в байт-коде Java, может быть медленнее.

Ответ 10

Pattern p = Pattern.compile("[\\p{Alpha}]*[\\p{Punct}][\\p{Alpha}]*");
        Matcher m = p.matcher("Afsff%esfsf098");
        boolean b = m.matches();

        if (b == true)
           System.out.println("There is a sp. character in my string");
        else
            System.out.println("There is no sp. char.");

Ответ 11

//без использования регулярного выражения........

    String specialCharacters=" !#$%&'()*+,-./:;<=>[email protected][]^_`{|}~0123456789";
    String name="3_ [email protected]";
    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");
    }

Ответ 12

//это обновленная версия кода, который я опубликовал /* Метод isValidName проверяет, не должно ли имя, переданное как аргумент, 1.неверное значение или пробел 2.специальный характер 3.Digits(0-9) Объяснение --- Здесь str2 - это переменная массива String, которая хранит разделенную строку имени, которая передается как аргумент Переменная count подсчитывает количество специальных символов Метод вернет true, если он удовлетворяет всем условиям */

public boolean isValidName(String name)
{
    String specialCharacters=" !#$%&'()*+,-./:;<=>[email protected][]^_`{|}~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;
    }
}

Ответ 13

в строке String str2 [] = name.split(""); дать дополнительный символ в массиве... Позвольте мне объяснить на примере "Aditya".split("") вернет [, A, d, i, t, y, a] У вас будет дополнительный символ в вашем массиве...
"Aditya".split("") работает не так, как ожидалось, с помощью маршрута saroj, вы получите дополнительный символ в String = > [, A, d, i, t, y, a].

Я изменил его, см. ниже код работает как ожидалось

 public static boolean isValidName(String inputString) {

    String specialCharacters = " !#$%&'()*+,-./:;<=>[email protected][]^_`{|}~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;
    }
}

Ответ 14

Это сработало для меня:

String s = "string";
if (Pattern.matches("[a-zA-Z]+", s)) {
 System.out.println("clear");
} else {
 System.out.println("buzz");
}

Ответ 15

Преобразуйте строку в массив символов со всеми буквами в нижнем регистре:

char c[] = str.toLowerCase().toCharArray();

Затем вы можете использовать Character.isLetterOrDigit(c[index]) чтобы узнать, какой индекс имеет специальные символы.

Ответ 16

Использовать совпадения статического метода класса java.util.regex.Pattern(regex, String obj)
регулярное выражение: символы в нижнем и верхнем регистре и цифры от 0 до 9
String obj: объект String, который вы хотите проверить, содержит ли он специальный символ или нет.

Возвращает логическое значение true, если только содержит символы и цифры, в противном случае возвращает логическое значение false

Пример.

String isin = "12GBIU34RT12";<br>
if(Pattern.matches("[a-zA-Z0-9]+", isin)<br>{<br>
   &nbsp; &nbsp; &nbsp; &nbsp;System.out.println("Valid isin");<br>
}else{<br>
   &nbsp; &nbsp; &nbsp; &nbsp;System.out.println("Invalid isin");<br>
}