kako provjeriti ima li niz posebne znakove u javi


Odgovor 1:

Budući da na Javi ne postoji metoda za provjeru izravno, bolje je uzeti palicu u svoje ruke kako bismo je razvili.

Evo tri od mogućih mnogo načina da to postignem na vrhu glave (uzimajući u obzir prostor kao nespecijalan lik):


Koristeći

Regularni izrazi

:

privatni statički logički isSpecialCharacter (znak c){ return c.toString (). match ("[^ az A-Z0-9]");}

Ovdje simbol ^ (kareta) u uzorku implicira da lik koji se razmatra ne smije spadati ni u jednu od sljedećih kategorija:

  1. Mala abeceda
  2. Prostor
  3. Velika abeceda
  4. Broj

Koristeći

ASCII kodovi

:

privatni statički logički isSpecialCharacter (znak c){ return c! = 32 && // nije razmak (c <48 || c> 57) && // nije znamenka (c <65 || c> 90) && // nije velika abeceda(c <97 || c> 122); // nije mala abeceda}

Ovdje, baš kao i u prethodnom primjeru, osiguravamo da znak c ne pripada spomenutim kategorijama uspoređujući svoju ASCII vrijednost s ASCII rasponima nespecifičnih znakovnih simbola.


Negiranje odgovora već postojećih metoda:

privatni statički logički isSpecialCharacter (znak c){ povratak! Character.isLetterOrDigit (c) && ! Character.isSpaceChar (c);}

Ovdje negiramo odgovore vraćene iz statičkih metoda Character.isLetterOrDigit (c) i Character.isSpaceChar (c) kako bismo bili sigurni da ćemo se istiniti samo kada je znak c koji je u pitanju poseban znak.

Nadam se da je pomoglo.


Odgovor 2:

Pojedinosti snažno sugeriraju da pristupite likovima jedan po jedan. Nemojte to raditi, to je neučinkovito.

Ako želite otkriti jedan određeni znak, upotrijebite indexOf i provjerite je li -1 (što znači da znak nije pronađen):

statička logička vrijednost sadržiCharacter (niz niza, znak znaka) { vrati string.indexOf (znak)! = -1;}

Ako želite otkriti sadrži li niz barem jedan znak iz određene skupine, upotrijebite regularne izraze:

statička logička vrijednost sadržiDotOrAt (niz niza) { vratiti Pattern.compile ("[@ \.]"). matcher (string) .find ();}

Zapravo, samo upotrijebite regularne izraze za bilo koje, ali najtrivijalnije string operacije. Pomalo ih je teško razumjeti i definitivno nisu najčitajniji, ali su neizmjerno moćni:

statička logička vrijednost sadržiNonAlphanumeric (niz niza) { vratiti obrazac.compile ("[^ \\ w \\ s]"). matcher (string) .find (); // Alternativno: // povratak! string.matches ("[\\ w \\ s] *");}

Odgovor 3:

Može se provjeriti kao u nastavku

inputStr.indexOf ('.')! = - 1) vrati true ako je znak u String else false

inputStr.indexOf ('@')! = - 1) vrati true ako je znak u String else false


Odgovor 4:

Čini se da pokušavate potvrditi adresu e-pošte na Javi. Adresa e-pošte može se provjeriti pomoću metode java.util.regex.Pattern.matches (). Ova metoda podudara se s regularnim izrazom za e-poštu i danu ulaznu e-poštu i vraća true ako se podudaraju i false u suprotnom