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:
- Mala abeceda
- Prostor
- Velika abeceda
- 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