special-characters joptionpane - JAVA: Prüfe einen String, wenn ein Sonderzeichen darin enthalten ist





beispiel showinputdialog (13)


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

Wie überprüfen Sie eine Zeichenfolge, wenn ein Sonderzeichen wie folgt vorhanden ist:

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



Sehen Sie sich die Klasse java.lang.Character an. Es hat einige Testmethoden und Sie können eine finden, die Ihren Bedürfnissen entspricht.

Beispiele: Character.isSpaceChar(c) oder !Character.isJavaLetter(c)




Das hat für mich funktioniert

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



Sie können den folgenden Code verwenden, um Sonderzeichen aus einer Zeichenfolge zu erkennen.

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 == true)
        System.out.println("There is a special character in my string ");
     else
         System.out.println("There is no special char.");
     return 0;
 }
}



// das ist aktualisierte Version von Code, den ich gepostet habe / * Die isValidName-Methode überprüft, ob der als Argument übergebene Name nicht enthalten sollte - 1.null value oder space 2.any Sonderzeichen 3.Digits (0-9) - Hier ist str2 eine String-Array-Variable, die die geteilte Zeichenkette des Namens speichert, die als Argument übergeben wird. Die Count-Variable zählt die Anzahl der Sonderzeichen. Die Methode gibt true zurück, wenn sie alle Bedingungen erfüllt.

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



in der Zeile String str2 [] = name.split (""); geben Sie ein zusätzliches Zeichen in Array ... Lassen Sie mich durch ein Beispiel erklären "Aditya" .split ("") würde zurückgeben [, A, d, i, t, y, a] Sie werden einen zusätzlichen Charakter in Ihrem Array haben .. .
Die "Aditya" .split ("") funktioniert nicht wie erwartet von saroj routetray. Sie erhalten ein zusätzliches Zeichen in String => [, A, d, i, t, y, a].

Ich habe es geändert, siehe unten Code es funktioniert wie erwartet

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



Wenn Sie Buchstaben, Sonderzeichen und Zahlen in Ihrem Passwort mit mindestens 8 Ziffern haben möchten, dann verwenden Sie diesen Code, es funktioniert perfekt

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;

}



Wenn es mit regex [a-zA-Z0-9 ]* sind keine Sonderzeichen enthalten.




Zuerst müssen Sie die Sonderzeichen, die Sie überprüfen möchten, erschöpfend identifizieren.

Dann können Sie einen regulären Ausdruck schreiben und verwenden

public boolean matches(String regex)



Alles hängt davon ab, was genau du mit "speziell" meinst. In einer Regex können Sie angeben

  • \ W bedeutet Nicht-Alpanumerisch
  • \ p {Punct} bedeutet Interpunktionszeichen

Ich vermute, dass Letzteres das ist, was du meinst. Wenn Sie aber keine [] -Liste verwenden, geben Sie genau an, was Sie wollen.




Besuchen Sie jedes Zeichen in der Zeichenfolge, um festzustellen, ob dieses Zeichen in einer schwarzen Liste von Sonderzeichen enthalten ist. das ist O (n * m).

Der Pseudocode ist:

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

Die Komplexität kann leicht verbessert werden, indem die Blacklist so sortiert wird, dass Sie jeden Check vorzeitig beenden können. Die String-Suchfunktion ist jedoch wahrscheinlich systemeigener Code, so dass diese Optimierung - die im Java-Byte-Code enthalten wäre - durchaus langsamer sein könnte.




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



The key issue is that a glyph in a string takes 32 bits (16 bits for a character code) but a byte only has 8 bits to spare. A one-to-one mapping doesn't exist unless you restrict yourself to strings that only contain ASCII characters. System.Text.Encoding has lots of ways to map a string to byte[], you need to pick one that avoids loss of information and that is easy to use by your client when she needs to map the byte[] back to a string.

Utf8 is a popular encoding, it is compact and not lossy.





java string special-characters